版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wdx_1136346879/article/details/86349263
#监听用户打开的应用程序# (重点)
时时刻刻监听某些操作的行为,watch dog 看门狗
任务栈:管理activity,一个应用就有一个任务栈,打开所有的activity都存放在任务栈
在服务中跳转activity必须给要跳转的activity指明一个任务栈,这样才能跳转
步骤 WatchDogService extends Service
在服务oncreate方法中执行
//1.进程的管理者
final ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
//2.开启线程时时刻刻监听用户打开的应用程序
new Thread(){
public void run() {
while(isTasks){
//3.获取正在的运行任务栈
//maxNum : 获取前几个正在运行的任务栈
List<RunningTaskInfo> runningTasks = am.getRunningTasks(1);
for (RunningTaskInfo runningTaskInfo : runningTasks) {
//4.获取栈底的activity
ComponentName baseactivity = runningTaskInfo.baseActivity;
//runningTaskInfo.topActivity;//获取栈顶的activity
//5.获取应用程序的包名
String packageName = baseactivity.getPackageName();
//6.判断获取包名是否是打开的应用程序的包名,是就显示密码输入界面,不是就不管了
if (packageName.equals("com.android.mms")) {
Intent intent = new Intent(WatchDogService.this,MainActivity.class);
//给跳转的activity指明一个任务栈
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
System.out.println(packageName);
}
SystemClock.sleep(500);
}
};
}.start();