zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android 8.1 系统应用如何拉起第三方应用的服务

Android应用系统服务 如何 第三方 8.1
2023-09-14 09:04:18 时间

现象:如果第三方应用没有系统权限,如果想在系统中拉起第三方应用的服务,想要实现该功能只能在AMS中过滤掉
代码路径:
frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
在ActivityManagerService.java文件中appServicesRestrictedInBackgroundLocked()方法中可以过滤该应用,允许系统拉起该应用的方法

int appServicesRestrictedInBackgroundLocked(int uid, String packageName, int packageTargetSdk) {
// Persistent app?
if (mPackageManagerInt.isPackagePersistent(packageName)) {
if (DEBUG_BACKGROUND_CHECK) {
Slog.i(TAG, “App " + uid + “/” + packageName
+ " is persistent; not restricted in background”);
}
return ActivityManager.APP_START_MODE_NORMAL;
}

    // Non-persistent but background whitelisted?
    if (uidOnBackgroundWhitelist(uid)) {
        if (DEBUG_BACKGROUND_CHECK) {
            Slog.i(TAG, "App " + uid + "/" + packageName