1、定义一个用于管理全部活动的类 ActivityCollector.java
package com.t20.collector; import java.util.ArrayList; import java.util.List; import android.app.Activity; /** * 本类用来管理活动 * @author Administrator * */ 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(); } } //清空所有活动 activities.clear(); } }
2、在另一个项目(APP)上,写一个方法,比如点击某个按钮,就发送强制下线的广播
/** * 强制QQ下线功能 * @param v */ public void QQLoginOut(View v){ //发送一条广播,用于通知QQ程序要强制用户下线 Intent intent=new Intent("com.t20.qq.FORCE_OFFLINE"); sendBroadcast(intent); }
3、在需要强制下线的活动(Activity)动态注册一个广播接收器
package com.t20.qqlogin; import com.t20.collector.ActivityCollector; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.view.Menu; import android.view.Window; public class ListActivity extends Activity { private forceoffLineReceiver receiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //1、隐藏标题栏,在加载布局之前设置(兼容Android2.3.3版本) requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_list); ActivityCollector.addActivity(this); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); //动态注册一个广播接收器 IntentFilter intentFilter=new IntentFilter(); intentFilter.addAction("com.t20.qq.FORCE_OFFLINE");//com.t20.qq.FORCE_OFFLINE是强制下线的广播名 receiver=new forceoffLineReceiver(); registerReceiver(receiver, intentFilter); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); ActivityCollector.removeActivity(this); } /** * 自定义一个广播接收器 * @author Administrator * */ class forceoffLineReceiver extends BroadcastReceiver{ @Override public void onReceive(final Context context, Intent intent) { // TODO Auto-generated method stub 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) { // TODO Auto-generated method stub //销毁所有活动 ActivityCollector.finishAll(); //重新启动登录界面 Intent intent=new Intent(context, MainActivity.class); context.startActivity(intent); } }); builder.show(); } } }