美文网首页
接收广播实现全局弹窗

接收广播实现全局弹窗

作者: Smart_Arvin | 来源:发表于2016-11-05 21:32 被阅读959次

    Android TV开发过程中通过接收开机广播等实现各种提示弹窗的需求非常多,当然也可以是其他任何广播,任何诡异的需求,你懂的...

    以下内容仅是个人开发经验,欢迎指正~*

    • 方法一:
    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://www.haomeiwen.com/subject/nbeguttx.html