android 通過廣播來彈出dialog(在小米上會一閃而過的原因)
阿新 • • 發佈:2019-01-25
最近又學了一些android 的基礎知識廣播,之前因為一直沒有用到所以就沒怎麼重視,在接觸一些大牛們的專案原始碼後,發現廣播確是蠻有用的。
於是自己就翻閱了幾本書和幾個相關視訊,仿照著寫了一個基本功能的測試app,功能大致是點選一個介面上的按鈕會發送一個廣播,在xml檔案中已經事先註冊了一個廣播接收者,那個接收者的
onReceive方法中有一個啟動dialog的方法:
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context); dialogBuilder.setTitle("Warning"); dialogBuilder.setMessage("test this app by my"); dialogBuilder.setCancelable(false); dialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {Intent intent = new Intent(context, Otherclass.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } }); AlertDialog alertDialog = dialogBuilder.create();alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); alertDialog.show();
這樣會啟動一個dialog,但是我在6.0的手機測試中報錯,我想又是許可權問題,
if (Build.VERSION.SDK_INT >= 23) { if(!Settings.canDrawOverlays(context)) { Intent intent2 = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION); intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent2); return; } else { //繪ui程式碼, 這裡說明6.0系統已經有許可權了 jieguo(context); } } else { //繪ui程式碼,這裡android6.0以下的系統直接繪出即可 jieguo(context); }照著之前的攝像頭的動態許可權申請方法我試了一下,可以了。
本來到這裡算是結束了,但是我還有一個紅米手機,於是我手賤試了一下,哎倒是出現了一個框,但是馬上消失,可以說是一閃而過。
我鬱悶了,難道程式碼有問題,不能啊,我分別在Nexus5x 6.0模擬機,4.4 雜牌酷派 4.4錘子上都可以執行啊。這個問題我足足測了兩個消失,
找了網上的也沒有什麼人碰到過,更不用說給解決方法了,後來我想是不是小米系統給我限制了?,我進入到app的許可權介面果然有一個彈出框限制。
這個坑人的東西,也不說明一個,也不自己彈個框出來警告一下我,這樣我怎麼知道啊。哎,反正最後是成功解決了。
現在市面上andorid廠家越來越多,定製的android也越來越多了,在原有基礎上改動很大啊。