特別需要注意的幾點如下:
- 需要設置AlertDialog的類型
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
2. 需要聲明Window彈框的權限
<user-permission android:name="android.premission.SYSTEM_ALERT_WINDOW" />
3. 在點擊AlertDialog的按鈕時,如果利用Intent進行頁面跳轉,需要給Intent加入FLAG_ACTIVITY_NEW_TASK
的標志
接收器中 關鍵代碼如下:
1 public class ForceOfflineReceiver extends BroadcastReceiver{ 2 @Override 3 public void onReceive(final Context context, Intent intent) { 4 5 AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context); 6 dialogBuilder.setTitle("下線通知"); 7 dialogBuilder.setMessage("你的賬戶在其他地方登錄 Over"); 8 dialogBuilder.setCancelable(false); 9 dialogBuilder.setPositiveButton("重新登錄", 10 new DialogInterface.OnClickListener() { 11 @Override 12 public void onClick(DialogInterface dialog, int which) { 13 ActivityCollector.finishAll();//摧毀所有活動 14 Intent intent1 = new Intent(context, LoginActivity.class); 15 //在廣播接受者中啟動活動需要添加FLAG_ACTIVITY_NEW_TASK標志 16 intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 17 context.startActivity(intent1); 18 } 19 }); 20 AlertDialog alertDialog = dialogBuilder.create(); 21 alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 22 alertDialog.show(); 23 } 24 }