最近在自己的项目中需要用到判断一个应用是否启动的功能。为了扩展一下知识点,就把题目定成了如果判断当前显示是否为桌面。
其实这个过程有三个知识点。
带着这些问题我们开始今天的讲解吧。
- ActivityManager manager = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
- List<</span>RunningTaskInfo> runningTaskInfos = manager.getRunningTasks(Integer.MAX_VALUE);
- RunningTaskInfo info = runningTaskInfos.get(0);
- private List<</span>String> getHomes() {
- List<</span>String> packages = new ArrayList<</span>String>();
- PackageManager packageManager = ListenService.this.getPackageManager();
- Intent intent = new Intent(Intent.ACTION_MAIN);
- intent.addCategory(Intent.CATEGORY_HOME);
- List<</span>ResolveInfo> resolveInfo = packageManager.queryIntentActivities(intent,
- PackageManager.MATCH_DEFAULT_ONLY);
- for(ResolveInfo info : resolveInfo){
- packages.add(info.activityInfo.packageName);
- System.out.println(info.activityInfo.packageName);
- }
- return packages;
- }
- public boolean isHome(){
- homes = getHomes();
- ActivityManager mActivityManager =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
- List<</span>RunningTaskInfo> rti = mActivityManager.getRunningTasks(1);
- return homes.contains(rti.get(0).topActivity.getPackageName());
- }
- private List<</span>String> getHomes() {
- List<</span>String> packages = new ArrayList<</span>String>();
- PackageManager packageManager = ListenService.this.getPackageManager();
- Intent intent = new Intent(Intent.ACTION_MAIN);
- intent.addCategory(Intent.CATEGORY_HOME);
- List<</span>ResolveInfo> resolveInfo = packageManager.queryIntentActivities(intent,
- PackageManager.MATCH_DEFAULT_ONLY);
- for(ResolveInfo info : resolveInfo){
- packages.add(info.activityInfo.packageName);
- System.out.println(info.activityInfo.packageName);
- }
- return packages;
- }