方法一:
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);
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