Android中 如何判断现在所处的界面是否为home主桌面

阅读 13

2023-03-28

/** 
      * 获得属于桌面的应用的应用包名称 
      * @return 返回包含所有包名的字符串列表 
      */  
     private List<String> getHomes() {  
         List<String> names = new ArrayList<String>();  
         PackageManager packageManager = this.getPackageManager();  
         //属性   
         Intent intent = new Intent(Intent.ACTION_MAIN);
      intent.addCategory(Intent.CATEGORY_HOME);  
         List<ResolveInfo> resolveInfo = packageManager.queryIntentActivities(intent,  
               PackageManager.MATCH_DEFAULT_ONLY);  
         for(ResolveInfo ri : resolveInfo){  
            names.add(ri.activityInfo.packageName);  
            Log.i("zhangyinfu PinyinIME.Java", "packageName =" + ri.activityInfo.packageName);
         }  
         return names;
     }分析:1)既然要判断当前界面,那就要判断当前的RunningTasks中的第一个;
      2)引入ActivityManager获取RunningTasks;
      3)取出RunningTasks中的topActivity的PackageName;
      4)最后跟第一步得到的List做比较即可!
      5)需添加相关权限
      <uses-permission Android:name="android.permission.GET_TASKS" />
    /** 
      * 判断当前界面是否是桌面 
      */ 
     public boolean isHome(){ 
         ActivityManager mActivityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);  
         List<RunningTaskInfo> rti = mActivityManager.getRunningTasks(1);
         List<String> strs = getHomes();
         if(strs != null && strs.size() > 0){
             return strs.contains(rti.get(0).topActivity.getPackageName());
         }else{
             return false;
         }
     }


 




精彩评论(0)

0 0 举报