接收广播全局弹窗

    xiaoxiao2026-10-06  0

    方法一: public class LoginBroadCastReceiver extends BroadcastReceiver{ @Override public void onReceive(final Context context, Intent intent){ AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("下线通知"); builder.setMessage("你的账号在其他地方登录!"); builder.setCancelable(false); builder.setPositiveButton("重新登录", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which){ ActivityCollector.finishAll(); Intent intent = new Intent(context, LoginActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //在广播接受者中启动活动需要添加这个标志 context.startActivity(intent); } }); AlertDialog dialog = builder.create(); dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); //需要设置AlertDialog的类型,保证在广播接收者中可以正常弹出 dialog.show(); } }

    弹窗权限:

    <uses-permissionandroid:name="android.permission.SYSTEM_ALERT_WINDOW" /> 方法二:

    正常弹出AlertDialog的流程如下:

    new AlertDialog.Builder(context).setTitle("在BroadcastReceiver里弹出AlertDialog").show();

    **但是其实AlertDialog似乎只能在activity中弹出 为了解决在BroadcastReceiver里弹出AlertDialog这个问题,我们可以这样做:**

    AlertDialog alertDialog=new AlertDialog.Builder(context).create(); alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); alertDialog.show();

    需要注意的时候,最后还要在androidManifest.xml文件中加入以下两句话:

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW"/>
    转载请注明原文地址: https://ju.6miu.com/read-1312689.html
    最新回复(0)