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

来源:互联网 发布:数据库开发教程 编辑:程序博客网 时间:2024/05/17 08:33

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

原创粉丝点击