避免在设置中强制停止某一应用
来源:互联网 发布:淘宝以前的订单消失了 编辑:程序博客网 时间:2024/06/08 05:30
音乐播放过程中,在设置-》应用中,对音乐执行强制停止,相关日志如下:
framework层相关代码alps\frameworks\base\services\core\java\com\android\server\am\ActivityManagerService.java中对应用停止运行执行的代码如下:
@Override public void forceStopPackage(final String packageName, int userId) { if (checkCallingPermission(android.Manifest.permission.FORCE_STOP_PACKAGES) != PackageManager.PERMISSION_GRANTED) { String msg = "Permission Denial: forceStopPackage() from pid=" + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid() + " requires " + android.Manifest.permission.FORCE_STOP_PACKAGES; Slog.w(TAG, msg); throw new SecurityException(msg); } final int callingPid = Binder.getCallingPid(); userId = mUserController.handleIncomingUser(callingPid, Binder.getCallingUid(), userId, true, ALLOW_FULL_ONLY, "forceStopPackage", null); long callingId = Binder.clearCallingIdentity(); try { IPackageManager pm = AppGlobals.getPackageManager(); synchronized(this) { int[] users = userId == UserHandle.USER_ALL ? mUserController.getUsers() : new int[] { userId }; for (int user : users) { int pkgUid = -1; try { pkgUid = pm.getPackageUid(packageName, MATCH_DEBUG_TRIAGED_MISSING, user); } catch (RemoteException e) { } if (pkgUid == -1) { Slog.w(TAG, "Invalid packageName: " + packageName); continue; } try { pm.setPackageStoppedState(packageName, true, user); } catch (RemoteException e) { } catch (IllegalArgumentException e) { Slog.w(TAG, "Failed trying to unstop package " + packageName + ": " + e); } /// M: [process suppression] @{ if ("1".equals(SystemProperties.get("persist.runningbooster.support")) || "1".equals(SystemProperties.get("ro.mtk_aws_support"))) { AMEventHookData.PackageStoppedStatusChanged eventData = AMEventHookData.PackageStoppedStatusChanged.createInstance(); eventData.set(packageName, SUPPRESS_ACTION_STOP, "forceStopPackage"); mAMEventHook.hook(AMEventHook.Event.AM_PackageStoppedStatusChanged, eventData); } /// M: [process suppression] @} if (mUserController.isUserRunningLocked(user, 0)) { forceStopPackageLocked(packageName, pkgUid, "from pid " + callingPid); finishForceStopPackageLocked(packageName, pkgUid); } } } } finally { Binder.restoreCallingIdentity(callingId); } }
在设置中对音乐点击强制停止,如果想让音乐继续后台播放,可以在ActivityManagerService.java中对代码进行控制,判断packageName是否为音乐,如果是音乐,直接返回即可。到时产生的效果是,点击强制停止,会没有响应,达到了想要的效果。
阅读全文
0 0
- 避免在设置中强制停止某一应用
- android 应用强制停止
- android设置--》应用程序详细信息--》强制停止
- jq在某个样式中删除某一条样式 强制移除样式
- php强制文件下载(避免文件或图片直接在浏览器中打开)
- C++编码军规(002):避免在C++中使用C形式的强制类型转换
- php强制文件下载(避免文件或图片直接在浏览器中打开)
- 在windows2003中去掉IE的强制安全设置
- 如何在iPhone应用中避免内存泄露
- 在iPhone应用中如何避免内存泄露
- 如何在iPhone应用中避免内存泄露
- 在iPhone应用中如何避免内存泄露
- 在iPhone应用中如何避免内存泄露
- 在iPhone应用中如何避免内存泄露
- 在iPhone应用中如何避免内存泄露
- Android应用被强制停止后无法接受广播解决方案
- Android应用被强制停止后无法接受广播解决方案
- Android应用被强制停止后无法接受广播解决方案
- 数字信号处理实验(一)
- validate表单验证用法 (一)
- STL之map应用 回文串
- Text
- null pointer exception
- 避免在设置中强制停止某一应用
- Azure上部署的资源公网连通性测试工具-paping
- 1.颜色空间缩减算法使用
- C. Star sky(Codeforces Round #427 (Div. 2) C)
- 【Java学习笔记】21:单实例设计模式
- 常用生物信息学格式介绍
- js页面跳转和新窗口打开
- Hello Mr.J——Docker
- Windows 10中Cisco VPN Client提示Reason 442: failed to enable virtual adapter