点击home五秒内无法再次进入问题

本文探讨了APP在用户点击home键后5秒内无法通过广播或悬浮窗等方式重新激活的问题。通过分析Android源码,揭示了ActivityManagerService中的权限检查机制,并提出了解决方案:申请特定权限或将应用安装在特定目录。
摘要由CSDN通过智能技术生成

在解决app点击home之后无法在通过广播/悬浮框等再次进入的问题之前我们先了解一下几种APP安装的路径

1.系统APP安装路径主要分为

    a./system/app/priv-app

    b./system/app

2.普通APP安装路径一般为:/data/app

我们可以很明确的看到系统APP安装路径存在两个,那么这两个路径又怎样的区别呢

1./system/priv-app目录是Google在Android4.4之后提出的,目的在于将系统级APP也分成几个等级,在该目录下的APP可以申请的权限要比在/system/app目录下的app申请的权限要多,在该目录下主要安装的是一些系统核心组件和一些服务等具有较高特权的APP

2./system/app目录主要存放的是一些相对不是那么重要的app,当然这也只是相抵而言.

至此我们所需要了解的一些基础东西就简单的介绍完毕了,下面进入我们的正题

系统中其实已经有通过home键退出后5S内点击悬浮框或者其他方式重新进入的应用,例如最常见的电话,当电话接通后我们点击home一般通过状态栏我们是可以立即再次进入的,通过分析Android源码,ActivityManagerService的stopAppSwitches()方法对"android.permission.STOP_APP_SWITCHES"权限做检测,如果没有该权限则

mHandler.sendMessageDelayed(msg, APP_SWITCH_DELAY_TIME);//static final long APP_SWITCH_DELAY_TIME = 5*1000;
 

如果存在该权限则立即启动,至此我们找到根本的原因,即缺少"android.permission.STOP_APP_SWITCHES"权限

那么问题就很好解决了,我们在Androidmanifest.xml中申请该权限不就可以了么,其实不然,Android的权限管理是非常严格的,其将权限以 android:permissionGroup 分成几个组用 android :protectionLevel 分成几个等级,而android.permission.STOP_APP_SWITCHES权限恰好是/system/priv-app所能申请到的权限(该权限/system/app无法申请到),所以确实有需要的时候我们可以将自己的应用安装在/system/priv-app目录下,并申请android.permission.STOP_APP_SWITCHES权限来解决按下home键后5S内无法通过intent或者点击悬浮按钮的再次进入的问题.

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值