监听用户打开的应用程序

版权声明:本文为博主原创文章,未经博主允许不得转载。 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();

猜你喜欢

转载自blog.csdn.net/wdx_1136346879/article/details/86349263
今日推荐