现象:如果第三方应用没有系统权限,如果想在系统中拉起第三方应用的服务,想要实现该功能只能在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