Android开发-如何判断当前页面是否是桌面(Home)

android自定义桌面应用 这篇文章主要讲下自定义桌面应用.效果主要是调用packageManager来获取当前所有的程序,并在自定义桌面程序中展示,并支持跳转. 阅读详情

1Android桌面的简介:

在Android系统中,任何一个可见的界面都属于一个应用程序,桌面也是一个应用程序。例如,我们通常打开手机看到的第一个界面就属于桌面应用。Android系统会自带一个桌面应用,这个桌面App是系统App。同时,也有人(或公司)会开发第三方桌面应用,这类属于用户App,例如,Go桌面,点心桌面,MiUi的桌面。

2Android桌面的特点:

只要是桌面应用,就会有下面这个属性值:

"Android.intent.category.Home" 

所以只要找出所有的声明为Home的activity的"android.intent.action.MAIN"所在的包名就可以了。

 3 桌面相关代码:

3.1 获取桌面的代码:

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

3.2判断是否是桌面:

然后就是在你的应用中需要判断是否是桌面(在service或者新线程之类的);

/** 
 * 判断当前界面是否是桌面 
 */  
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)既然要判断当前界面,那就要判断当前的RunningTasks中的第一个;

2)引入ActivityManager获取RunningTasks;

3)取出RunningTasks中的topActivity的PackageName;

4)最后跟第一步得到的List做比较即可!

5)别忘了添加权限

<uses-permission android:name="android.permission.GET_TASKS" />


Android语言基础教程(105)Android应用核心Intent对象范例之返回系统Home桌面:别再用手指戳Home键了!Android程序员必备的返回桌面秘籍 本文深度解析Android中Intent机制,详细讲解如何使用Intent.ACTION_MAIN和Intent.CATEGORY_HOME实现返回系统Home桌面的功能,提供基础Intent、moveTaskToBack、重写返回键等多种实现方案,并附完整示例代码和兼容性处理技巧,帮助开发者打造更优雅的Android应用交互体验。 阅读详情

相关推荐

android各组件详解- Intent.

android各组件详解- Intent.

android.intent.category以及android.intent.action.MAIN

一. android.intent.category.LAUNCHER与android.intent.category.HOME的区别 android.intent.category.LAUNCHER:android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里,就是android开机后的主程序列表。 android.intent.category.

zzobin的专栏 1616

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

本文实例讲述了Android判断现在所处界面是否为home主桌面的方法。分享给大家供大家参考。具体实现方法如下: /** * 获得属于桌面的应用的应用包名称 * @return 返回包含所有包名的字符串列表 */ private List getHomes() { List names = new ArrayList(); PackageManager packageManager = this.getPackageManager(); //属性 Intent intent = new Intent(Intent.ACTION_

Android(activity)

android的activity中的API详解

qq_56127002的博客 1408

短视频mssdk中get_token协议逆向与加密流程深度解析

本文深度解析了短视频mssdk中get_token协议的逆向分析与加密流程。通过抓包、Frida Hook、静态分析等手段,详细拆解了协议数据的Protobuf结构、设备信息采集来源,并重点剖析了其核心加密链路:zlib压缩、自定义TEA算法与AES-CBC加密,最终实现完整的协议模拟。

flower的专栏 555

飞常准小程序接口逆向分析:如何破解航班查询的签名机制

本文深度解析了飞常准小程序航班查询接口的安全机制,重点剖析了其基于MD5和参数排序的签名算法。通过逆向分析核心代码,详细阐述了签名生成流程,并提供了Python实现的签名生成器与调试技巧,为开发者理解与模拟此类接口调用提供了实战指南。

zz67890的博客 531

Android 判断当前界面是否是桌面(home)

Android 判断当前界面是否是桌面(home) 1、获取所有属于桌面应用的包名 /** * 获得属于桌面的应用的应用包名称 * * @return 返回包含所有包名的字符串列表 */ private List&lt;String&gt; getHomes() { List&lt;String&gt; names = new A...

M__Xin的博客 2972

[小技巧] 如何复制知乎电子书中的文字和图片

文章目录一、背景二、复制文字1.最简单的方法(适合短小文字)2. 进阶方法(适合大段文字)三、复制图片四、注意事项 一、背景 有时候希望从书中摘录一部分文字作为笔记,但是知乎电子书阅读时候是禁止copy的,要么手打,要么OCR,给学习带来了一些不便。 审查元素后发现,知乎电子书是把文字分成一段一段的,试图F12直接copy不太方便。 本问将以谷歌Chrome浏览器为例,给出复制小技巧。 二、复制文字 1.最简单的方法(适合短小文字) 选中你需要的文字,左键单击不放,直接拖到地址栏。 然后可以从地址栏中

江南蜡笔小新 9246

android判断当前界面是否是桌面(主页)

本文地址:http://blog.csdn.net/you_and_me12/article/details/7284749 最近自己在做应用,需要使用到判断当前是否是桌面而处理效果。 研究参考了一些文章,有的说到了点,但都没有说明清楚。 本文代码经过实践,仅供参考! 1、首先获得属于桌面的应用(系统原装应用、Go桌面等等) 分析:1)这些应用都会包含:"android.intent

阿凯的专栏 1万+

Simulink仿真状态空间中状态变量时域响应

起因 今天老师留了一道关于状态空间变量响应的题,于是想用simulink仿真,一开始使用state-space模块,但是发现它只能输出y,没办法显示状态变量的变化情况。然而状态变量之间的关系都可以表示为一阶微分方程组,因此我们考虑在Simulink中搭建微分方程组来求解这个问题。 微分方程组 x1˙=x2x2˙=−4x1−5x2+1(1)\dot{x_1}=x_2\\ \dot{x_2}=-4x_...

ZYunfei的博客 7448

上位机介绍:C# 开发者的必知基础

上位机是指在工业控制系统中,位于上层、负责人机交互和数据管理的计算机/软件,与“下位机”(PLC、传感器、变频器、单片机等硬件设备)相对应,核心是“向下通信控制设备,向上展示交互数据”。下位机:一线干活的“工人”(执行采集、控制指令);上位机:指挥管理的“办公室人员”(发指令、看数据、做报表)。C#开发者掌握上位机开发的核心是“通信+UI+稳定性基础层:搞懂WinForms/WPF基础、串口/Modbus通信,能实现核心功能;进阶层:掌握分层设计、异步编程、工业级容错(断线重连、数据校验);

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1559

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

本文实例讲述了Android判断现在所处界面是否为home主桌面的方法。分享给大家供大家参考。具体实现方法如下:/*** 获得属于桌面的应用的应用包名称* @return 返回包含所有包名的字符串列表*/private List getHomes() {List names = new ArrayList();PackageManager packageManager = this.getPack...

weixin_33733742的博客 429

CANoe中如何仿真报文的CRC和Counter,告诉你三种方法皆可实现

CANoe中如何仿真报文的CRC和Counter

蚂蚁小兵 5276

Android系统判断当前界面是否是桌面Launcher

Android系统判断当前界面是否是桌面Launcher public static boolean **isHome**(Context context) { ActivityManagerm ActivityManager =(ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE); List<Act...

weixin_44633720的博客 1549

C++高级数据结构算法 | 二叉树的四种遍历算法详解(递归与非递归实现)

二叉树遍历方法 、前序遍历算法 、中序遍历算法 、后序遍历算法 、层序遍历算法

ZY-JIMMY 2564

ThingsBoard3.9.1规则引擎方式发送钉钉通知消息

thingsboard3.9.1/4.0规则链方式发送钉钉通知消息。

hssjf的专栏 531

【转】android判断当前界面是否是桌面(主页)

原地址:http://blog.csdn.net/you_and_me12/article/details/7284749 最近自己在做应用,需要使用到判断当前是否是桌面而处理效果。 研究参考了一些文章,有的说到了点,但都没有说明清楚。 本文代码经过实践,仅供参考! 1、首先获得属于桌面的应用(系统原装应用、Go桌面等等) 分析:1)这些应用都会包含:"android.intent.

decidee的专栏 1718

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Android 判断当前的界面是否是桌面的方法

在开发桌面飘浮控件的时候,需要通过service查看当前是不是桌面,从而控制漂浮窗的显现与消失,下面的代码就是判断是否是桌面的方法 /** * 判断当前界面是否是桌面 */ private boolean isHome() { ActivityManager mActivityManager = (ActivityManager) ge

石佛永不老 3748

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

android 判断当前窗口,Android判断现在所处界面是否为home主桌面的方法

本文实例讲述了Android判断现在所处界面是否为home主桌面的方法。分享给大家供大家参考。具体实现方法如下:/*** 获得属于桌面的应用的应用包名称* @return 返回包含所有包名的字符串列表*/private List getHomes() {List names = new ArrayList();PackageManager packageManager = this.getPack...

weixin_33150295的博客 709

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

android判断自己的程序是否是默认桌面

最近做程序,用到了辅助功能设置桌面,以下是设置进入桌面的代码。 public static void setDefaultL(Activity activity) { Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory("android.intent.category.HOME"); //这

eshikong123的博客 2322

android 如何判断当前页面是否是桌面

最近在自己的项目中需要用到判断一个应用是否启动的功能。为了扩展一下知识点,就把题目定成了如果判断当前显示是否为桌面。 其实这个过程有三个知识点。     1.如何找出正在运行的任务? Android系统是支持多任务的,找到所有运行的任务是关键。     2.如何找出当前正在运行的任务?虽然android是多任务的系统,但是同时在前端运行的应用只会有一个。如何找出来呢?     3.如何找出

idaretobe的专栏 1974

android 判断当前窗口,Android判断当前界面是否是home界面

在Android中属于桌面的应用都有一个category属性:android.intent.category.Home,就可以通过这个属性获取属于home应用的集合private List getHomes() {List names = new ArrayList();PackageManager packageManager = this.getPackageManager();Intent ...

weixin_36016076的博客 1040

android 判断系统版本5.0,Android判断当前是否是桌面(兼容5.0以上)

最近需要在项目中判断界面是否回到桌面,上网找了下资料,发现大部分都是如下做法:/*** 获得属于桌面的应用的应用包名称** @return 返回包含所有包名的字符串列表*/public static List getHomes(Context context) {List names = new ArrayList();PackageManager packageManager = context...

weixin_39719165的博客 700

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

本文实例讲述了Android判断现在所处界面是否为home主桌面的方法。分享给大家供大家参考。具体实现方法如下:/*** 获得属于桌面的应用的应用包名称* @return 返回包含所有包名的字符串列表*/private List getHomes() {List names = new ArrayList();PackageManager packageManager = this.getPack...

weixin_28829903的博客 354

在Android中,如何判断当前是否在桌面上

在做Android上面的悬浮窗的时候,一般需要去判断一种情况,即当前是否是在桌面上(即按下Home键时回到的手机界面): 1)在桌面上,才展示悬浮窗 2)不在桌面上,则隐藏悬浮窗 桌面(Home),其实本质上也是一个应用程序,也是由Activity组成的,所以一个手机里面有可能装有多个桌面应用,这是第一点。 第二点,要判断当前是否在桌面上,其实也就是要判断当前显示的这个Activity,是

持剑 4286
上一篇: Android开发-Android中如何动态添加控件
下一篇: Android开发-Android中的TextView省略号的用法
liranke
博客等级 码龄20年 4939粉丝 594原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值