强制下线 本地广播

续……………

  1. 创建广播接收器
 2. `package com.xiaoxu.administrator.myapplication3.Broadcast;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.WindowManager;

import com.xiaoxu.administrator.myapplication3.SecondActivity;
import com.xiaoxu.administrator.myapplication3.util.ActivityCollector;

import java.util.List;

/** 1. Created by Administrator on 2016/4/17. */
public class MyBroadcast1 extends BroadcastReceiver {
//根据当前的context,获取到当前类的名字。

 2. ```
 private String getActivityName(Context context) {
        android.app.ActivityManager am = (android.app.ActivityManager) context.getSystemService(Activity.ACTIVITY_SERVICE);
        List<android.app.ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);

        ComponentName componentInfo = taskInfo.get(0).topActivity;
        return componentInfo.getClassName();
    }

    @Override
    public void onReceive(final Context context, Intent intent) {


        AlertDialog.Builder dialog = new android.app.AlertDialog.Builder(
                ActivityCollector.getTopActivity(getActivityName(context)));

        dialog.setCancelable(false);
        dialog.setTitle("异地登陆");
        dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

                //销毁当前所有活动

                ActivityCollector.finishAll();

                Intent intent = new Intent(context, SecondActivity.class);
     //在广播中启动活动需要指定 Intent.FLAG_ACTIVITY_NEW_TASK 标志                
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                context.startActivity(intent);

            }
        });


        AlertDialog alert = dialog.create();
//将dialog设置指定的类型,否则无法弹出。        
        alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

        dialog.show();
    }


}

 ``
  - // ActivityCollector.getTopActivity(getActivityName(context)),将根据context获取到出于栈顶的活动名称,并遍历集合,得到当前的集合。获取到当前活动的实例,传入即可。
 - 并添加权限 <uses-permission android:name="android.permission.REAL_GET_TASKS"></uses-permission>

最后添加 允许使用系统dialog的权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"></uses-permission>

你可能感兴趣的:(强制下线)