特别需要注意的几点如下:
- 需要设置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 }
时间: 2024-11-05 21:59:06