博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
启动广播强制退出程序
阅读量:5863 次
发布时间:2019-06-19

本文共 1482 字,大约阅读时间需要 4 分钟。

序的任何地方,只需要发出这样一条广播,就可以完成强制下线的操作了。

那么毫无疑问,接下来我们就需要创建一个广播接收器了,新建ForceOfflineReceiver
继承自BroadcastReceiver,代码如下所示:
public class ForceOfflineReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
dialogBuilder.setTitle("Warning");
dialogBuilder.setMessage("You are forced to be offline. Please try
to login again.");
dialogBuilder.setCancelable(false);
dialogBuilder.setPositiveButton("OK",
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); // 重新启动LoginActivity
}
});
AlertDialog alertDialog = dialogBuilder.create();
// 需要设置AlertDialog的类型,保证在广播接收器中可以正常弹出
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTE
M_ALERT);
alertDialog.show();
}
}
这次onReceive()方法里可不再是仅仅弹出一个Toast 了,而是加入了较多的代码,那我
们就来仔细地看一下吧。首先肯定是使用AlertDialog.Builder 来构建一个对话框,注意这里
一定要调用setCancelable()方法将对话框设为不可取消,否则用户按一下Back 键就可以关闭
第一行代码——Android
212
对话框继续使用程序了。然后使用setPositiveButton()方法来给对话框注册确定按钮,当用户
点击了确定按钮时,就调用ActivityCollector 的finishAll()方法来销毁掉所有活动,并重新启
动LoginActivity 这个活动。另外,由于我们是在广播接收器里启动活动的,因此一定要给
Intent 加入FLAG_ACTIVITY_NEW_TASK 这个标志。最后,还需要把对话框的类型设为
TYPE_SYSTEM_ALERT,不然它将无法在广播接收器里弹出。

转载于:https://www.cnblogs.com/gentspy/p/5412621.html

你可能感兴趣的文章
P2614 计算机弹琴
查看>>
redis中使用java脚本实现分布式锁
查看>>
每天一个linux命令(53):route命令
查看>>
域名跳转
查看>>
Flex有提示功能的TextInput输入框
查看>>
kickstart与pxe自动安装linux
查看>>
使用document.write输出覆盖HTML问题
查看>>
第二十四天 代码块与构造方法私有化
查看>>
MySQL命令行--导入导出数据库
查看>>
必看!决定蓝领薪酬高低的因素
查看>>
我的友情链接
查看>>
《分布式对象存储》作者手把手教你写 GO 语言单元测试!
查看>>
springmvc 流程
查看>>
规则引擎配置器简单理解
查看>>
零基础,CCNA自学资料
查看>>
浏览器宽高
查看>>
系统被恶意修改,请从正确渠道获取系统安装程序 解决办法
查看>>
OpenERP —— 下一代ERP
查看>>
iptables规则配置
查看>>
docker对镜像的相关操作
查看>>