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程序设计有所帮助。
下一篇: 嵌入式通信协议-UART