Android7.1 高通 特定apk最上面活动时,禁止关机或重启

1、判断apk是否在最上面活动

        private static boolean isForground(final Context context){
        ActivityManager mActivityManager = (ActivityManager)                         context.getSystemService(Context.ACTIVITY_SERVICE);
       if (mActivityManager.getRunningTasks(1) == null) {
            Log.e("hdxxx", "running task is null, ams is abnormal!!!");
            return false;
       }
        ActivityManager.RunningTaskInfo mRunningTask =
                mActivityManager.getRunningTasks(1).get(0);
        if (mRunningTask == null) {
            Log.e("hxxx", "failed to get RunningTaskInfo");
            return false;
        }
        String pkgName = mRunningTask.topActivity.getPackageName();
        Log.e("hxxx", "pkgName:" + pkgName);
        if(pkgName.equals("com.mangechargespot.app")){
            return true;
        }
        return false;
    }

2、阻止关机或重启

在/frameworks/base/services/core/java/com/android/server/power/ShutdownThread.java下:

static void shutdownInner(final Context context, boolean confirm) {
         // ensure that only one thread is trying to power down.
         // any additional calls are just returned
        Log.d("hxxx","ShutdownThread_____shutdownInner()");


        if(isForground(context)){
            Toast.makeText(context,"阻止关机或重启",Toast.LENGTH_SHORT).show();
            return;
        }


         synchronized (sIsStartedGuard) {
             if (sIsStarted) {
                 Log.d(TAG, "Request to shutdown already running, returning.");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值