还是安全测试的原因,废话就不说了,直接进入正题
Activity生命周期中 onPause()中加入:
AtyModule.getinstance().onPause(this);
1 | AtyModule.getinstance().onPause(this); |
---|
onResume()中加入:
AtyModule.getinstance().onResume();
1 | AtyModule.getinstance().onResume(); |
---|
就Ok了。
AtyModule文件类如下,在合适的地方新建一个类就行。
package 包名.publics.tools;
import android.app.Activity;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
/**
* Title: AtyModule<br/>
* Description: 界面劫持监测方法<br/>
*/
public class AtyModule {
/**
* 用于执行定时任务
*/
private Timer timer = null;
/**
* 用于保存当前任务
*/
private List<MyTimerTask> tasks = null;
/**
* 唯一实例
*/
private static AtyModule atyModule;
private AtyModule() {
// 初始化
tasks = new ArrayList<MyTimerTask>();
timer = new Timer();
}
/**
* 获取唯一实例
*
* @return 唯一实例
*/
public static AtyModule getinstance() {
if (atyModule == null) {
atyModule = new AtyModule();
}
return atyModule;
}
/**
* 在activity的onPause()方法中调用
*
* @param activity
*/
public void onPause(final Activity activity) {
MyTimerTask task = new MyTimerTask(activity);
tasks.add(task);
timer.schedule(task, 2000);
}
/**
* 在activity的onResume()方法中调用
*/
public void onResume() {
if (tasks.size() > 0) {
tasks.get(tasks.size() - 1).setCanRun(false);
tasks.remove(tasks.size() - 1);
}
}
/**
* 自定义TimerTask类
*/
class MyTimerTask extends TimerTask {
/**
* 任务是否有效
*/
private boolean canRun = true;
private Activity activity;
public void setCanRun(boolean canRun) {
this.canRun = canRun;
}
public MyTimerTask(Activity activity) {
this.activity = activity;
}
@Override
public void run() {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
if (canRun) {
// 程序退到后台,进行风险警告
T.showLong(activity, "程序切换至后台运行,请注意观察运行环境是否安全!");
tasks.remove(MyTimerTask.this);
}
}
});
}
}
}
声明:疯人峰语|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权
转载:转载请注明原文链接 - Android 防止APP界面劫持