–分两种情况处理,
低于5.0:使用getRunningTasks
高于5.0:使用,PACKAGE_USAGE_STATE 查看使用情况的这个权限
这个权限,只能系统app使用,要使用,需要在该权限后面添加上忽略,并且在用户使用时,给用户自己来打开app的查看使用情况的权利。这个权限不属于6.0权限,使用其他方式动态申请该权限无效。
使用场景:
定时打印app的栈顶app 所在的包名称
Demo场景实例:
创建一个服务,服务里面设置一个定时器,每隔5s打印一次栈顶app所在的包名,在布局文件中,设置一个按钮,用于打开这个服务。
1、添加权限
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />
2、服务的设置
注意: 服务 需要在清单文件中进行注册
/**
* 自定义服务 时刻记录手机的栈顶activity 所在包
*/
public class TopAppService extends Service {
private Timer timer;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("TopAppService",

本文记录了在Android中获取栈顶应用包名的方法,针对5.0以下和5.0以上系统分别提供处理方案。在高于5.0的版本中,需要使用PACKAGE_USAGE_STATE权限,此权限只能系统应用使用。文中还提到在整合高低版本代码时遇到的编译错误及其可能原因,并提供了服务开启和运行效果的说明。

2979

被折叠的 条评论
为什么被折叠?



