導航:首頁 > APP軟體 > 安卓對話框源代碼

安卓對話框源代碼

發布時間:2025-10-06 14:45:35

1. 手機可以打開程序代碼

手機打不開程序源代碼,系統不同。

VBS文件手機是不能打開的,但可以將它嵌入到網頁文件上,有的手機瀏覽器是支持HTML文件的,但是VBS代碼中的大部分在手機上都不能用,如調用外部程序什麼的,因為那是Windows的代碼,不過手機可以支持msgbox、inputbox等函數,嵌到網頁中的方法是新建一個文本文檔,擴展名改為html,

在裡面輸入<script language="vbscript"></script>,輸入vbs代碼時在兩個括弧中間輸入,不過可能和vbs文件不太一樣,如

1

<scriptlanguage="vbscript">msgbox"哈哈!"</script>

不過手機還是推薦用JS腳本,舉個例,彈出對話框

1

<scriptlanguage="vbscript">alert("哈哈!");</script>

如果你有能力你可以直接把做出的html文件上傳到一個域名上,然後在手機直接輸入網址打開,或者文件傳到手機上打開

測試你的手機瀏覽器是否支持JS插件:在瀏覽器地址欄上輸入

1

javascript:alert("哈哈!")

然後回車,如果能彈出對話框說明支持JS

VBS的方法:輸入

1

vbscript:msgbox("哈哈!")

回車,同上

2. Android緋葷粺鎬庝箞鍒╃敤鍒╃敤Java鍙嶅皠鎶鏈闃繪㈤氳繃鎸夐挳鍏抽棴瀵硅瘽妗嗭紙AlertDialog錛

浼楁墍鍛ㄧ煡錛孉lertDialog綾葷敤浜庢樉紺哄硅瘽妗嗐傚叧浜嶢lertDialog鐨勫熀鏈鐢ㄦ硶鍦ㄨ繖閲屽氨涓嶈︾粏浠嬬粛浜嗭紝緗戜笂鏈夊緢澶氾紝璇昏呭彲浠ヨ嚜宸辨悳緔銆傞偅涔堟湰鏂囪佷粙緇嶇殑鏄濡備綍闅忓績鎵嬈插湴鎺у埗AlertDialog銆
鐜板湪鎴戜滑鏉ョ湅鐪嬬涓涓闇奼傦細濡傛灉鏌愪釜搴旂敤闇瑕佸脊鍑轟竴涓瀵硅瘽妗嗐傚綋鍗曞嚮鈥滅『瀹氣滄寜閽鏃跺畬鎴愭煇浜涘伐浣滐紝濡傛灉榪欎簺宸ヤ綔澶辮觸錛屽硅瘽妗嗕笉鑳藉叧闂銆傝屽綋鎴愬姛瀹屾垚宸ヤ綔鍚庯紝鍒欏叧闂瀵硅瘽妗嗐傚綋鐒訛紝鏃犺轟綍紼嬪害鎯呭喌錛屽崟鍑燴滃彇娑堚濇寜閽閮戒細鍏抽棴瀵硅瘽妗嗐
榪欎釜闇奼傚苟涓嶅嶆潅錛屼篃騫朵笉榪囧垎錛堣櫧鐒舵垜浠鍙浠ヨ嚜宸卞紕涓獮ctivity鏉ュ畬鎴愯繖涓宸ヤ綔錛屼篃鍙鍦╒iew涓婅嚜宸辨斁鎸夐挳錛屼絾榪欐樉紺烘湁浜涘ぇ鐐鎵撹殜瀛愪簡錛屽傛灉瀵硅瘽妗嗕笂鍙鏈変竴琛屾枃鏈錛岃垂榪欎箞澶氬姴澶涓嶅間簡錛夈備絾浣跨敤榪嘇lertDialog鐨勮昏呴兘鐭ラ亾錛屾棤璁哄崟鍑葷殑鍝涓鎸夐挳錛屾棤璁烘寜閽鍗曞嚮浜嬩歡鐨勬墽琛屾儏鍐靛備綍錛屽硅瘽妗嗘槸鑲瀹氳佸叧闂鐨勩備篃灝辨槸璇達紝鐢ㄦ埛鏃犳硶鎺у埗瀵硅瘽妗嗙殑鍏抽棴鍔ㄤ綔銆傚疄闄呬笂錛屽叧闂瀵硅瘽妗嗙殑鍔ㄤ綔宸茬粡鍦ˋndroid SDK鍐欐諱簡錛屽苟涓旀湭緇欎嬌鐢ㄨ呯暀鏈変換浣曟帴鍙c備絾鎴戠殑搴у彸閾鏄鈥滃畤瀹欎腑娌℃湁浠涔堟槸涓嶈兘鎺у埗鐨勨濄
鏃㈢劧瑕佹帶鍒跺規斁妗嗙殑鍏抽棴琛屼負錛岄栧厛灝卞緱鍒嗘瀽鏄鍝浜涚被銆佸摢浜涗唬鐮佷嬌榪欎釜瀵硅瘽妗嗗叧闂鐨勩傝繘鍏AlertDialog綾葷殑婧愪唬鐮併傚湪AlertDialog涓鍙瀹氫箟浜嗕竴涓鍙橀噺錛歮Alert銆傝繖涓鍙橀噺鏄疉lertController綾誨瀷銆侫lertController綾繪槸Android鐨勫唴閮ㄧ被錛屽湪com.android.internal.app鍖呬腑錛屾棤娉曢氳繃鏅閫氱殑鏂瑰紡璁塊棶銆備篃鏃犳硶鍦‥clipse涓閫氳繃鎸塁trl閿璺熻釜榪涙簮浠g爜銆備絾鍙浠ョ洿鎺ュ湪Android婧愪唬鐮佷腑鎵懼埌AlertController.java銆傛垜浠鍐嶅洖鍒癆lertDialog綾諱腑銆侫lertDialog綾誨疄闄呬笂鍙鏄涓涓鏋跺瓙銆傝薄璁劇疆鎸夐挳銆佽劇疆鏍囬樼瓑宸ヤ綔閮芥槸鐢盇lertController綾誨畬鎴愮殑銆傚洜姝わ紝AlertController綾繪墠鏄鍏抽敭銆
鎵懼埌AlertController.java鏂囦歡銆傛墦寮鍚庝笉瑕佹劅鍒板ご鏅曞摝錛岃繖涓鏂囦歡涓鐨勪唬鐮佹槸寰堝氬湴銆備笉榪囪繖涔堝氫唬鐮佸規湰鏂囩殑涓婚樹篃娌′粈涔堢敤澶勩備笅闈㈠氨鎵句竴涓嬫帶鍒舵寜閽鐨勪唬鐮併
鍦ˋlertController綾葷殑寮澶村氨浼氱湅鍒板備笅鐨勪唬鐮侊細 View.OnClickListener mButtonHandler = new View.OnClickListener() {
public void onClick(View v) {
Message m = null ;
if (v == mButtonPositive && mButtonPositiveMessage != null ) {
m = Message.obtain(mButtonPositiveMessage);
} else if (v == mButtonNegative && mButtonNegativeMessage != null ) {
m = Message.obtain(mButtonNegativeMessage);
} else if (v == mButtonNeutral && mButtonNeutralMessage != null ) {
m = Message.obtain(mButtonNeutralMessage);
}
if (m != null ) {
m.sendToTarget();
} // Post a message so we dismiss after the above handlers are executed
mHandler.obtainMessage(ButtonHandler.MSG_DISMISS_DIALOG, mDialogInterface)
.sendToTarget();
}
};
浠庤繖孌典唬鐮佷腑鍙浠ョ寽鍑烘潵錛屽墠鍑犺屼唬鐮佺敤鏉ヨЕ鍙戝硅瘽妗嗕腑鐨勪笁涓鎸夐挳錛 Positive 銆 Negative 鍜 Neutral 錛夌殑鍗曞嚮浜嬩歡錛岃屾渶鍚庣殑浠g爜鍒欑敤鏉ュ叧闂瀵硅瘽妗嗭紙鍥犱負鎴戜滑鍙戠幇浜 MSG_DISMISS_DIALOG 銆佺寽鍑烘潵鐨勶級銆
mHandler.obtainMessage(ButtonHandler.MSG_DISMISS_DIALOG, mDialogInterface)
.sendToTarget(); 涓婇潰鐨勪唬鐮佸苟涓嶆槸鐩存帴鏉ュ叧闂瀵硅瘽妗嗙殑錛岃屾槸閫氳繃涓涓 Handler 鏉ュ勭悊錛屼唬鐮佸備笅錛
private static final class ButtonHandler extends Handler {
// Button clicks have Message.what as the BUTTON{1,2,3} constant
private static final int MSG_DISMISS_DIALOG = 1 ;

private WeakReference < DialogInterface > mDialog; public ButtonHandler(DialogInterface dialog) {
mDialog = new WeakReference < DialogInterface > (dialog);
} @Override
public void handleMessage(Message msg) {
switch (msg.what) {

case DialogInterface.BUTTON_POSITIVE:
case DialogInterface.BUTTON_NEGATIVE:
case DialogInterface.BUTTON_NEUTRAL:
((DialogInterface.OnClickListener) msg.obj).onClick(mDialog.get(), msg.what);
break ;

case MSG_DISMISS_DIALOG:
((DialogInterface) msg.obj).dismiss();
}
}
}
浠庝笂闈浠g爜鐨勬渶鍚庡彲浠ユ壘鍒 ((DialogInterface) msg.obj).dismiss();銆傜幇鍦ㄧ湅浜嗚繖涔堝氭簮浠g爜錛屾垜浠鏉ユ葷粨涓涓嬪硅瘽妗嗘寜閽鍗曞嚮浜嬩歡鐨勫勭悊榪囩▼銆傚湪AlertController澶勭悊瀵硅瘽妗嗘寜閽鏃朵細涓烘瘡涓涓鎸夐挳娣誨姞涓涓猳nclick浜嬩歡銆傝岃繖涓浜嬩歡綾葷殑瀵硅薄瀹炰緥灝辨槸涓婇潰鐨刴ButtonHandler銆傚湪榪欎釜鍗曞嚮浜嬩歡涓棣栧厛浼氶氳繃鍙戦佹秷鎮鐨勬柟寮忚皟鐢ㄤ負鎸夐挳璁劇疆鐨勫崟鍑諱簨浠訛紙涔熷氨鏄閫氳繃setPositiveButton絳夋柟娉曠殑絎浜屼釜鍙傛暟璁劇疆鐨勫崟鍑諱簨浠訛級錛屽湪瑙﹀彂瀹屾寜閽鐨勫崟鍑諱簨浠跺悗錛屼細閫氳繃鍙戦佹秷鎮鐨勬柟寮忚皟鐢╠ismiss鏂規硶鏉ュ叧闂瀵硅瘽妗嗐傝屽湪AlertController綾諱腑瀹氫箟浜嗕竴涓鍏ㄥ矓鐨刴Handler鍙橀噺銆傚湪AlertController綾諱腑閫氳繃ButtonHandler綾繪潵瀵硅薄鏉ヤ負mHandler璧嬪箋傚洜姝わ紝鎴戜滑鍙瑕佷嬌鐢ㄦ垜浠鑷宸盚andler瀵硅薄鏇挎崲ButtonHandler灝卞彲浠ラ樆姝㈣皟鐢╠ismiss鏂規硶鏉ュ叧闂瀵硅瘽妗嗐備笅闈㈠厛鍦ㄨ嚜宸辯殑紼嬪簭涓寤虹珛涓涓鏂扮殑ButtonHandler綾伙紙涔熷彲鍙鍏朵粬鐨勫悕錛夈
class ButtonHandler extends Handler
{ private WeakReference < DialogInterface > mDialog; public ButtonHandler(DialogInterface dialog)
{
mDialog = new WeakReference < DialogInterface > (dialog);
} @Override
public void handleMessage(Message msg)
{
switch (msg.what)
{ case DialogInterface.BUTTON_POSITIVE:
case DialogInterface.BUTTON_NEGATIVE:
case DialogInterface.BUTTON_NEUTRAL:
((DialogInterface.OnClickListener) msg.obj).onClick(mDialog
.get(), msg.what);
break ;
}
}
} 鎴戜滑鍙浠ョ湅鍒幫紝涓婇潰鐨勭被鍜孉lertController涓鐨凚uttonHandler綾誨緢鍍忥紝鍙鏄鏀鎺変簡switch璇鍙ョ殑鏈鍚庝竴涓猚ase瀛愬彞錛堢敤浜庤皟鐢╠ismiss鏂規硶錛夊拰鐩稿叧鐨勪唬鐮併
涓嬮潰鎴戜滑灝辮佷負AlertController涓鐨刴Handler閲嶆柊璧嬪箋傜敱浜巑Handler鏄痯rivate鍙橀噺錛屽洜姝わ紝鍦ㄨ繖閲岄渶瑕佷嬌鐢↗ava鐨勫弽灝勬妧鏈鏉ヤ負mHandler璧嬪箋傜敱浜庡湪AlertDialog綾諱腑鐨刴Alert鍙橀噺鍚屾牱涔熸槸private錛屽洜姝わ紝涔熼渶瑕佷嬌鐢ㄥ悓鏍風殑鍙嶅皠鎶鏈鏉ヨ幏寰梞Alert鍙橀噺銆備唬鐮佸備笅錛
鍏堝緩絝嬩竴涓 AlertDialog 瀵硅薄
AlertDialog alertDialog = new AlertDialog.Builder( this )
.setTitle( " abc " )
.setMessage( " content " )
.setIcon(R.drawable.icon)
.setPositiveButton( 鈥滅『瀹氣,
new OnClickListener()
{
@Override
public void onClick(DialogInterface dialog,
int which)
{ }
}).setNegativeButton( " 鍙栨秷 " , new OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
}).create()
涓婇潰鐨勫硅瘽妗嗗緢鏅閫氾紝鍗曞嚮鍝涓鎸夐挳閮戒細鍏抽棴瀵硅瘽妗嗐備笅闈㈠湪璋冪敤 show 鏂規硶涔嬪墠鏉ヤ慨鏀逛竴涓 mHandler 鍙橀噺鐨勫礆紝 OK 錛屼笅闈㈡垜浠灝辨潵瑙佽瘉濂囪抗鐨勬椂鍒匯 try
{

Field field = alertDialog1.getClass().getDeclaredField( " mAlert " );
field.setAccessible( true );
// 鑾峰緱mAlert鍙橀噺鐨勫
Object obj = field.get(alertDialog1);
field = obj.getClass().getDeclaredField( " mHandler " );
field.setAccessible( true );
// 淇鏀筸Handler鍙橀噺鐨勫礆紝浣跨敤鏂扮殑ButtonHandler綾
field.set(obj, new ButtonHandler(alertDialog1));
}
catch (Exception e)
{
}
// 鏄劇ず瀵硅瘽妗
alertDialog.show(); 鎴戜滑鍙戠幇錛屽傛灉鍔犱笂try catch璇鍙ワ紝鍗曞嚮瀵硅瘽妗嗕腑鐨勭『瀹氭寜閽涓嶄細鍏抽棴瀵硅瘽妗嗭紙闄ら潪鍦ㄤ唬鐮佷腑璋冪敤dismiss鏂規硶錛夛紝鍗曞嚮鍙栨秷鎸夐挳鍒欎細鍏抽棴瀵硅瘽妗嗭紙鍥犱負璋冪敤浜哾ismiss鏂規硶錛夈傚傛灉鍘諱簡try鈥catch浠g爜孌碉紝瀵硅瘽妗嗗張浼氭仮澶嶆e父浜嗐
鉶界劧涓婇潰鐨勪唬鐮佸凡緇忚В鍐充簡闂棰橈紝浣嗛渶瑕佺紪鍐欑殑浠g爜浠嶇劧姣旇緝澶氾紝涓烘わ紝鎴戜滑涔熷彲閲囩敤鍙﹀栦竴縐嶆柟娉曟潵闃繪㈠叧闂瀵硅瘽妗嗐傝繖縐嶆柟娉曚笉闇瑕佸畾涔変換浣曠殑綾匯
榪欑嶆柟娉曢渶瑕佺敤鐐規妧宸с傜敱浜庣郴緇熼氳繃璋冪敤dismiss鏉ュ叧闂瀵硅瘽妗嗭紝閭d箞鎴戜滑鍙浠ュ湪dismiss鏂規硶涓婂仛鐐規枃絝犮傚湪緋葷粺璋冪敤dismiss鏂規硶鏃朵細棣栧厛鍒ゆ柇瀵硅瘽妗嗘槸鍚﹀凡緇忓叧闂錛屽傛灉瀵硅瘽妗嗗凡緇忓叧闂浜嗭紝灝變細閫鍑篸ismiss鏂規硶鑰屼笉鍐嶇戶緇鍏抽棴瀵硅瘽妗嗕簡銆傚洜姝わ紝鎴戜滑鍙浠ユ洪獥涓涓嬬郴緇燂紝褰撹皟鐢╠ismiss鏂規硶鏃舵垜浠鍙浠ヨ╃郴緇熶互涓哄硅瘽妗嗗凡緇忓叧闂錛堣櫧鐒跺硅瘽妗嗚繕娌℃湁鍏抽棴錛夛紝榪欐牱dismiss鏂規硶灝卞け鏁堜簡錛岃繖鏍峰嵆浣跨郴緇熻皟鐢ㄤ簡dismiss鏂規硶涔熸棤娉曞叧闂瀵硅瘽妗嗕簡銆
涓嬮潰璁╂垜浠鍥炲埌AlertDialog鐨勬簮浠g爜涓錛屽啀緇х畫璺熻釜鍒癆lertDialog鐨勭埗綾籇ialog鐨勬簮浠g爜涓銆傛壘鍒癲ismissDialog鏂規硶銆傚疄闄呬笂錛宒ismiss鏂規硶鏄閫氳繃dismissDialog鏂規硶鏉ュ叧闂瀵硅瘽妗嗙殑錛宒ismissDialog鏂規硶鐨勪唬鐮佸備笅錛 private void dismissDialog() {
if (mDecor == null ) {
if (Config.LOGV) Log.v(LOG_TAG,
" [Dialog] dismiss: already dismissed, ignore " );
return ;
}
if ( ! mShowing) {
if (Config.LOGV) Log.v(LOG_TAG,
" [Dialog] dismiss: not showing, ignore " );
return ;
} mWindowManager.removeView(mDecor); mDecor = null ;
mWindow.closeAllPanels();
onStop();
mShowing = false ;

sendDismissMessage();
}
璇ユ柟娉曞悗闈㈢殑浠g爜涓嶇敤綆″畠錛屽厛鐪 if(!mShowing){ 鈥 } 榪欐典唬鐮併傝繖涓 mShowing 鍙橀噺灝辨槸鍒ゆ柇瀵硅瘽妗嗘槸鍚﹀凡鍏抽棴鐨勩傚洜姝わ紝鎴戜滑鍦ㄤ唬鐮佷腑閫氳繃璁劇疆榪欎釜鍙橀噺灝卞彲浠ヤ嬌緋葷粺璁や負瀵硅瘽妗嗗凡緇忓叧闂錛屽氨涓嶅啀緇х畫鍏抽棴瀵硅瘽妗嗕簡銆傜敱浜 mShowing 涔熸槸 private 鍙橀噺錛屽洜姝わ紝涔熼渶瑕佸弽灝勬妧鏈鏉ヨ劇疆榪欎釜鍙橀噺銆傛垜浠鍙浠ュ湪瀵硅瘽妗嗘寜閽鐨勫崟鍑諱簨浠朵腑璁劇疆 mShowing 錛屼唬鐮佸備笅錛
try
{
Field field = dialog.getClass()
.getSuperclass().getDeclaredField(
" mShowing " );
field.setAccessible( true );
// 灝唌Showing鍙橀噺璁句負false錛岃〃紺哄硅瘽妗嗗凡鍏抽棴
field.set(dialog, false );
dialog.dismiss();}
catch (Exception e)
{}
灝嗕笂闈㈢殑浠g爜鍔犲埌鍝涓鎸夐挳鐨勫崟鍑諱簨浠朵唬鐮佷腑錛屽摢涓鎸夐挳灝卞啀涔熸棤娉曞叧闂瀵硅瘽妗嗕簡銆傚傛灉瑕佸叧闂瀵硅瘽妗嗭紝鍙闇鍐嶅皢 mShowing 璁句負 true 鍗沖彲銆傝佹敞鎰忕殑鏄錛屽湪涓涓鎸夐挳閲岃劇疆浜 mShowing 鍙橀噺錛屼篃浼氬獎鍝嶅彟涓涓鎸夐挳鐨勫叧闂瀵硅瘽妗嗗姛鑳斤紝鍥犳わ紝闇瑕佸湪姣忎竴涓鎸夐挳鐨勫崟鍑諱簨浠墮噷閮借劇疆 mShowing 鍙橀噺鐨勫箋 鏈鏂囨潵鑷狢SDN鍗氬錛岃漿杞借鋒爣鏄庡嚭澶勶細 http://blog.csdn.net/nokiaguy/archive/2010/07/27/5770263.aspx

3. 如何進行源代碼級的IDE調試

開發調試環境: Ubuntu 14.10,openJdk 1.7,Android Studio 1.0.2,android-5.0.1_r1源碼
由於AS是基於IntelliJ IDEA開發的,所以本文也適用於IntelliJ IDEA
一、修改Android Studio(以下簡稱AS)的內存配置

因為在導入源碼時需要消耗大量內存,所以先修改IDEA_HOME/bin/studio64.vmoptions(x86的機器修改studio.vmoptions)中-Xms和-Xmx的值。文檔中使用的是748m, 可自行修改。
二、配置AS的JDK、SDK
在IDE中添加一個沒有classpath的JDK, 這樣可以確保使用源碼里的庫文件

並將其作為要使用的SDK的Java SDK。如下圖

三、生成導入AS所需配置文件(*.ipr)
①編譯源碼(為了確保生成了.java文件,如R.java;如果編譯過,則無需再次編譯)
②檢查out/host/linux-x86/framework/目錄下是否有idegen.jar
如果idegen.jar不存在,執行:
mmm development/tools/idegen/

在5.0.1的源碼中會生成res.java的文件夾,導致idegen.jar運行時拋FileNotFoundException,這是idegen的代碼不夠嚴謹造成的。
我的分享里有修改這個bug的patch,或者直接使用我分享的idegen.jar。
③執行
development/tools/idegen/idegen.sh

等待出現類似下面的結果:
Read excludes: 5ms
Traversed tree: 44078ms

這時會在源碼的根目錄下生成android.ipr和android.iml兩個IntelliJ IDEA(AS是基於IntelliJ IDEA社區版開發的)的配置文件
Tips:
AS在導入代碼時比較慢,建議先修改android.iml,將自己用不到的代碼exclude出去.可以仿照過濾.repo文件夾的語法,如:
<excludeFolder url="file://$MODULE_DIR$/.repo" />
<excludeFolder url="file://$MODULE_DIR$/abi" />
<excludeFolder url="file://$MODULE_DIR$/art" />
這樣在導入時就會跳過abi和art文件夾.過濾的越多,AS的處理速度就會越快.
④在AS中打開源碼根目錄下新生成的android.ipr

如果在導入時AS出現

則建議按照其給定的解決方法來解決(網址:http://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit),具體內容如下圖:

四、解決源碼中跳轉錯誤問題
①為當前工程設置正確的SDK和JDK

②設置'Moles'的依賴

先將所有依賴刪掉,只留下上圖'1'所指向的兩個(注意:這里刪除全部只是為了方便。如果確實用到了.jar,在將它們的路徑添加進來就可以了.
如:5.0.1的ContactsCommon用到了geocoder-2.9.jar和libphonenumber-6.2.jar)
點擊上圖中'2'指向的'+'並選擇上圖'3'指向的'Jars or directories'選項,依次將frameworks和external文件夾添加進來.如:

其它版本的代碼在添加frameworks時可能會顯示成:

沒有關系,只是顯示問題,點擊OK還是會把frameworks路徑添加進去的.
如果還有代碼跳轉錯誤,請仿照上面的步驟將相應代碼的路徑或jar文件添加到其Dependencies標簽頁中即可.
五、DEBUG源碼
我們可以通過給剛導入的工程在'Moles'中添加'Android Framework'來讓AS將它作為一個Android工程,從而方便我們調試代碼.

可以按照上圖中'1'和'2'來添加Android Framework支持.

在代碼中加斷點,然後選擇'Run'->'Attach debugger to Android process'或者直接點擊下圖所示的圖標
在彈出的選擇進程(Choose Process)對話框中,勾選顯示所有進程,選擇要DEBUG的代碼所在的進程,點擊OK即可.
六、其它
代碼中很多地方提示Call requires API Level x.... 出現這個問題是因為AS將我們的工程當做安卓應用程序工程了,且源碼中沒有指定minSdkVersion.
我們只需在源碼根目錄加一個聲明minSdkVersion的AndroidManifest.xml文件即可(分享了一個AndroidManifest.xml)。
也可以考慮使用build.gradle來解決該問題。

閱讀全文

與安卓對話框源代碼相關的資料

熱點內容
java設計銀行 瀏覽:562
賣福利的app 瀏覽:790
蘋果手機u盤無法顯示文件夾內容 瀏覽:420
excel里的名字轉換成文件名 瀏覽:677
幼兒編程哪個教育好 瀏覽:224
口袋妖怪夢的光點40快速升級 瀏覽:214
京東蘋果6s為啥銀色貴 瀏覽:394
蘋果手機如何數據線連接電視 瀏覽:270
哪個版本的說文解字好 瀏覽:865
mysql資料庫伺服器初始化 瀏覽:625
word題注居中 瀏覽:345
s6新版本神器死亡之舞解析 瀏覽:399
金士頓128u盤拷文件速度才247kb 瀏覽:911
微信在電腦上怎麼鎖屏密碼怎麼設置密碼 瀏覽:832
迷失版本服務端 瀏覽:936
安卓對話框源代碼 瀏覽:550
什麼是數據校驗常見的有哪些 瀏覽:932
軟體下載文件太大怎麼辦 瀏覽:863
word怎樣打開ass文件 瀏覽:365
軟銀盛大網路 瀏覽:879

友情鏈接