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

来源:互联网 发布:javaweb旅游系统源码 编辑:程序博客网 时间:2024/05/20 08:01

  /** 
     * 获得属于桌面的应用的应用包名称 
     * @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;
        }
    }

 

原文地址:http://www.linuxidc.com/Linux/2012-02/54987.htm


阅读全文
0 0