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程序设计有所帮助。

(0)

相关推荐

  • Android监听home键的方法详解

    本文实例分析了Android监听home键的方法.分享给大家供大家参考,具体如下: 如何知道Home按钮被点击了呢?做launcher的时候,看源代码发现原因 如果你的Activity具备这些属性 <activity android:name="com.woyou.activity.HomeActivity" android:launchMode="singleInstance" > <intent-filter> <action an

  • Android 解决监听home键的几种方法

    Android 解决监听home键的几种方法 前言: 以下两种方法可以完美解决监听back键,home键,多任务键(最近任务键). 一.使用注册广播监听home键.多任务键 演示图 创建一个广播代码如下: class InnerRecevier extends BroadcastReceiver { final String SYSTEM_DIALOG_REASON_KEY = "reason"; final String SYSTEM_DIALOG_REASON_RECENT_APP

  • android4.0屏蔽HOME键的简单实现

    在android2.2 2.3中可以通过在activity中重写 复制代码 代码如下: @Override public void onAttachedToWindow() {this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);super.onAttachedToWindow(); } 这个函数屏蔽Home键. android4.0后这个方法就不能用了.下边是android4.0之后屏蔽Home键的方法. 复制代码

  • Android应用开发中模拟按下HOME键的效果(实现代码)

    下面提供代码示例,请参考. 复制代码 代码如下: public boolean onKeyDown(int keyCode, KeyEvent event) {      if (keyCode == KeyEvent.KEYCODE_BACK) {          Intent intent = new Intent(Intent.ACTION_MAIN);          intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);          i

  • Android4.0.x Home键事件拦截监听的方法

    本文实例讲述了Android4.0.x Home键事件拦截监听的方法.分享给大家供大家参考,具体如下: 在2.3.x 的主要做法如下,具体实现网上有很多文章 @Override public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); } 代码移植到4.0.1后 this.getWindow()

  • android里面屏蔽home键/禁止Home键或者随你DIY

    可以先禁止Home键,再在onKeyDown里处理按键值,点然后在击Home键的时候就把程序关闭,或者随你DIY. 复制代码 代码如下: @Override public boolean onKeyDown(int keyCode, KeyEvent event){ if(KeyEvent.KEYCODE_HOME==keyCode) android.os.Process.killProcess(android.os.Process.myPid()); return super.onKeyDow

  • Android监听Home键和Back键的区别介绍

    一:Android 中Home键监听和Back键监听的区别: (1).在Android中,当按下Home键的时候,默认情况下Stop前台的Activity,即Activity设置成停止状态[onStop()],而不是销毁状态[onDestory()].如果再次启动该Activity,不是调用onCreate()方法,而是调用onSavedInstanceState方法.则是从onRestart()开始-onStart()-onResume(). (2).当按下back键则不同,back键默认fi

  • Android中监听Home键的4种方法总结

    昨天需要处理一个问题,需要监听home键.最开始想到使用onKeydonwn这个方法.但是发现home不能这样处理,onKeydonwn可以处理菜单键和back键,但home不能.因为home键是系统键,情况特殊一些. 看了一下网上的资料,说下面的方法可以.(其实不行) 复制代码 代码如下: @Override     public void onAttachedToWindow() {         // TODO Auto-generated method stub         Log

  • Android编程实现获取标题栏、状态栏的高度、屏幕大小及模拟Home键的方法

    本文实例讲述了Android编程实现获取标题栏.状态栏的高度.屏幕大小及模拟Home键的方法.分享给大家供大家参考,具体如下: 1. 获取标题栏高度: /** * 获取标题栏的高度 * * @param activity * @return */ public int getTitleHeight(Activity activity) { Rect rect = new Rect(); Window window = activity.getWindow(); window.getDecorVi

  • Android 屏蔽和捕获Home键的示例代码

    在Level5以上(包含)中,Activity类中的方法:public void onAttachedToWindow ()就能对Home键进行捕获. 具体代码如下: MainActivity.java package com.lingdududu.test; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.WindowManager;

随机推荐