欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android判断现在所处界面是否为home主桌面的方法

程序员文章站 2024-01-23 11:26:40
本文实例讲述了android判断现在所处界面是否为home主桌面的方法。分享给大家供大家参考。具体实现方法如下: /** * 获得属于桌面的应用的应用包名称...

本文实例讲述了android判断现在所处界面是否为home主桌面的方法。分享给大家供大家参考。具体实现方法如下:

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

希望本文所述对大家的android程序设计有所帮助。