android 怎样判断是否在桌面

 我来答
总闯初典13
2015-10-17 · 贡献了超过106个回答
知道答主
回答量:106
采纳率:100%
帮助的人:15.1万
展开全部
按屏幕下方主页按钮,即可断定是否在桌面。

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。
08物理
推荐于2016-07-08 · 知道合伙人软件行家
08物理
知道合伙人软件行家
采纳数:1141 获赞数:4137
1、国内上市公司资深运维工程师、产品经理 2、百度芝麻将,认证管理员

向TA提问 私信TA
展开全部
判断过程有三个知识点。
1.如何找出正在运行的任务。 Android系统是支持多任务的,找到所有运行的任务是关键。
2.如何找出当前正在运行的任务。虽然android是多任务的系统,但是同时在前端运行的应用只会有一个。
3.如何找出桌面。

完整代码如下:
public boolean isHome(){
homes = getHomes();
ActivityManager mActivityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<</span>RunningTaskInfo> rti = mActivityManager.getRunningTasks(1);
return homes.contains(rti.get(0).topActivity.getPackageName());
}
private List<</span>String> getHomes() {
List<</span>String> packages = new ArrayList<</span>String>();
PackageManager packageManager = ListenService.this.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
List<</span>ResolveInfo> resolveInfo = packageManager.queryIntentActivities(intent,
PackageManager.MATCH_DEFAULT_ONLY);
for(ResolveInfo info : resolveInfo){
packages.add(info.activityInfo.packageName);
System.out.println(info.activityInfo.packageName);
}
return packages;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huanglenzhi
推荐于2016-07-18 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517196
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
  1、首先获得属于桌面的应用(系统原装应用、Go桌面等等)
  分析:1)这些应用都会包含:"android.intent.category.Home";
  2)所以只要找出所有的声明为Home的activity的"android.intent.action.MAIN"所在的包名就可以了!
  代码如下:
  /**
  * 获得属于桌面的应用的应用包名称
  * @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);
  System.out.println(ri.activityInfo.packageName);
  }
  return names;
  }

  2、然后就是在你的应用中需要判断是否是桌面(在service或者新线程之类的)
  分析: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);
  return homePackageNames.contains(rti.get(0).topActivity.getPackageName());
  }
  注:以上代码仅供参考,如需使用,可进行优化或者另行处理!
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式