Adroid中广播接收者的使用,实现强制下线功能
来源:互联网 发布:linux exit是什么意思 编辑:程序博客网 时间:2024/05/01 18:54
只要在界面上弹出一个对话框让用户无法进行其他操作,必须点
对话框的确定按钮,然后返回到登陆界面,可是存在着一个问题
强制下线时可能存在任何一个界面,难道每个界面都要写对话框
,这事我们就应该用到广播和广播接收者
我写了一个例子思路是:
LoginActivity登陆后跳到----》HomeActivity发广播----》
ForceOfflineReceiver中销毁所有的activity然后启动LoginActivity
怎样一次销毁所有activity,前面写过例子
http://blog.csdn.net/zhaihaohao1/article/details/42080287
项目结构:
核心代码:
LoginActivity
/**
*主界面
*登录并跳转
*/
public class LoginActivity extends BaseActivity {
private EditText accountEdit;
private EditText passwordEdit;
private Button login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
accountEdit=(EditText) findViewById(R.id.account);
passwordEdit=(EditText) findViewById(R.id.password);
login=(Button) findViewById(R.id.login);
login.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String yonghuming = accountEdit.getText().toString().trim();
String mima = passwordEdit.getText().toString().trim();
if (yonghuming.equals("admin")&&mima.equals("123456")) {
Intent intent = new Intent();
intent.setClass(LoginActivity.this, HomeActivity.class);
startActivity(intent);
}else {
Toast.makeText(LoginActivity.this, "信息错误", 10).show();
}
}
});
}
}//class
HomeActivity
/**
*发广播的界面
*/
public class HomeActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
Button forceoffline = (Button) findViewById(R.id.force_offline);
forceoffline.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent("QiangZhiXiaXian");
sendBroadcast(intent);
}
});
}
}//class
ForceOfflineReceiver
/**
*
*广播接收者,没有界面,但是可以显示对话框或者吐丝
*在广播中销毁所有的activity,并只启动LoginActivity。
*
*
*
*/
public class ForceOfflineReceiver extends BroadcastReceiver{
@Override
public void onReceive(final Context context, Intent intent) {
AlertDialog.Builder dialogBuilder=new AlertDialog.Builder(context);
dialogBuilder.setTitle("强制下线");
dialogBuilder.setMessage("广播接收者中,强制下线,请重新登录");
dialogBuilder.setCancelable(false);
dialogBuilder.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);//重新启动LoginActivity
}
});
AlertDialog alertDialog = dialogBuilder.create();
//需要正常的AlertDialog的类型,保证在广播接收者中可以正常弹出
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
alertDialog.show();
}
}//class
BaseActivity
/**
*
* 调用方法加载,或移除activity的匿名对象
*
*/
public class BaseActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);
}
}//class
ActivityCollector
/**
* 把所有activity的对象放到list中
*
*/
public class ActivityCollector {
public static List<Activity>activities=new ArrayList<Activity>();
public static void addActivity(Activity activity){
activities.add(activity);
}
public static void removeActivity(Activity activity){
activities.remove(activity);
}
public static void finishAll(){
for (Activity activity:activities) {
if (!activity.isFinishing()) {
activity.finish();
}
}
}
}//class
主清单中
系统级别的对话框,声明权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
注册广播接收者
<receiver android:name="com.zhh.android.ForceOfflineReceiver">
<intent-filter >
<action android:name="QiangZhiXiaXian"/>
</intent-filter>
</receiver>
其他的activity也要注册
如果没有明白下载我的例子
http://download.csdn.net/detail/zhaihaohao1/8311537
- Adroid中广播接收者的使用,实现强制下线功能
- 广播的实现--实现强制下线功能
- 广播的最佳实践——实现强制下线功能
- 广播的最佳实践——实现强制下线功能
- 广播的最佳实践,实现强制下线功能
- 广播的最佳实践-实现强制下线功能
- 广播的最佳实践-实现强制下线功能
- 广播的最佳实践——实现强制下线功能
- 广播的最佳实践——实现强制下线功能
- 广播的最佳实践---实现强制下线功能
- 广播的最佳实践——实现强制下线功能
- 广播的最佳实践-实现强制下线功能
- Android 广播------实现强制下线功能
- 利用广播实现强制下线功能
- 利用广播实现强制下线功能
- 广播的实践-强制下线功能
- android广播的实践----实现强制下线
- 实现强制下线功能
- timesten:TT0802错误
- 关于Android中xListView所出现的问题(点击后程序崩掉)
- Mysql5 与 Mongodb2.4 简单性能对比
- Chapter 7 Caches
- [转载]table合并单元格 colspan(跨列)和rowspan(跨行)
- Adroid中广播接收者的使用,实现强制下线功能
- Openwrt
- 计算机网络术语详解
- msysgit安装与配置
- iOS开发_统计xcode代码行数
- [LeetCode] Recover Binary Search Tree
- 2014年总结
- python 学习笔记(二十)
- JTA-Java Transaction API