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();
}
}
}