android界面监控,防劫持

1,首先要对自己应用的activity建立一个白名单

2,权限 <uses-permissionandroid:name="android.permission.GET_TASKS"/>

3,



import android.app.Activity;
import android.app.ActivityManager;
import android.app.Application;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;

import java.util.List;

/**
 * Created by anye0 on 2016/7/24.
 */
public class MyApplication extends Application {


    public static MyApplication instances;
    private boolean isBackground;

    @Override
    public void onCreate() {
        super.onCreate();
        instances = this;

        listenForForeground();
        listenForScreenTurningOff();

    }

    public static MyApplication getInstances() {
        return instances;
    }


    private void listenForForeground() {
        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
            @Override
            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
                Log.e("tag", activity.getClass().getSimpleName() + "---onActivityCreated");
            }

            @Override
            public void onActivityStarted(Activity activity) {
                Log.e("tag", activity.getClass().getSimpleName() + "---onActivityStarted");
            }

            //...
            @Override
            public void onActivityResumed(Activity activity) {
                Log.e("tag", activity.getClass().getSimpleName() + "---onActivityResumed");
                if (isBackground) {
                    notifyForeground();
                }
            }

            @Override
            public void onActivityPaused(Activity activity) {
                Log.e("tag", activity.getClass().getSimpleName() + "---onActivityPaused");

            }

            @Override
            public void onActivityStopped(Activity activity) {
                Log.e("tag", activity.getClass().getSimpleName() + "---onActivityStopped");
                isApplicationBroughtToBackground(activity);
            }

            @Override
            public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
            }

            @Override
            public void onActivityDestroyed(Activity activity) {
                Log.e("tag", activity.getClass().getSimpleName() + "---onActivityDestroyed");
            }
        });
    }

    private void listenForScreenTurningOff() {//锁屏
        IntentFilter screenStateFilter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
        registerReceiver(new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                notifyBackground();
            }
        }, screenStateFilter);
    }


    private void notifyForeground() {
        isBackground = false;
        Log.e("tag", "---重新使用应用");

    }

    private void notifyBackground() {
        isBackground = true;
        Log.e("tag", "---后台");

    }


    /**
     * 判断当前应用程序处于前台还是后台
     */
    public boolean isApplicationBroughtToBackground(Context context) {
        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
        if (!tasks.isEmpty()) {
            ComponentName topActivity = tasks.get(0).topActivity;
            if (!topActivity.getPackageName().equals(context.getPackageName())) {
                notifyBackground();
                return true;
            }
        }
        return false;

    }

    public boolean isBackground() {
        return isBackground;
    }


}
 /**
     * 判断应用在前台还是后台
     *
     * @return
     */
    private synchronized boolean isAppOnForeground() {
        String processName = getPackageName();

        ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
        KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);

        List<ActivityManager.RunningAppProcessInfo> processList = activityManager.getRunningAppProcesses();
        if (processList != null && processList.size() > 0) {
            for (ActivityManager.RunningAppProcessInfo process : processList) {
                if (process.processName.startsWith(processName)) {
                    boolean isBackground = process.importance != RunningAppProcessInfo.IMPORTANCE_FOREGROUND && process.importance != RunningAppProcessInfo.IMPORTANCE_VISIBLE;
                    boolean isLockedState = keyguardManager.inKeyguardRestrictedInputMode();
                    if (isBackground || isLockedState) {
                        return false;
                    } else {
                        // 前台
                        return true;
                    }
                }
            }
        }
        return true;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值