[core] Grant manager permission
This commit is contained in:
parent
aae69dcf5c
commit
4d334e9d52
|
|
@ -36,7 +36,7 @@ public class ModuleLogger {
|
||||||
|
|
||||||
public static void initLogger(ParcelFileDescriptor fileDescriptor) {
|
public static void initLogger(ParcelFileDescriptor fileDescriptor) {
|
||||||
if (fd == -1 && fileDescriptor!= null) {
|
if (fd == -1 && fileDescriptor!= null) {
|
||||||
fd = fileDescriptor.getFd();
|
fd = fileDescriptor.detachFd();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -126,6 +126,7 @@ public class ConfigManager {
|
||||||
|
|
||||||
public synchronized void updateManager(@NonNull String packageName) {
|
public synchronized void updateManager(@NonNull String packageName) {
|
||||||
writeText(managerPath, packageName);
|
writeText(managerPath, packageName);
|
||||||
|
manager = packageName;
|
||||||
updateManager();
|
updateManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -411,4 +412,12 @@ public class ConfigManager {
|
||||||
public String getPrefsPath(String fileName) {
|
public String getPrefsPath(String fileName) {
|
||||||
return miscPath + File.separator + "prefs" + File.separator + fileName;
|
return miscPath + File.separator + "prefs" + File.separator + fileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void grantManagerPermission() {
|
||||||
|
try {
|
||||||
|
PackageService.grantRuntimePermission(manager, "android.permission.INTERACT_ACROSS_USERS", 0);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
Log.e(TAG, Log.getStackTraceString(e));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ public class LSPosedService extends ILSPosedService.Stub {
|
||||||
String packageName = (uri != null) ? uri.getSchemeSpecificPart() : null;
|
String packageName = (uri != null) ? uri.getSchemeSpecificPart() : null;
|
||||||
if (packageName == null) {
|
if (packageName == null) {
|
||||||
Log.e(TAG, "Package name is null");
|
Log.e(TAG, "Package name is null");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
int uid = intent.getIntExtra(Intent.EXTRA_UID, -1);
|
int uid = intent.getIntExtra(Intent.EXTRA_UID, -1);
|
||||||
boolean replacing = intent.getBooleanExtra(Intent.EXTRA_REPLACING, false);
|
boolean replacing = intent.getBooleanExtra(Intent.EXTRA_REPLACING, false);
|
||||||
|
|
@ -51,6 +52,13 @@ public class LSPosedService extends ILSPosedService.Stub {
|
||||||
if (isXposedModule) {
|
if (isXposedModule) {
|
||||||
ConfigManager.getInstance().updateModuleApkPath(packageName, pkgInfo.applicationInfo.sourceDir);
|
ConfigManager.getInstance().updateModuleApkPath(packageName, pkgInfo.applicationInfo.sourceDir);
|
||||||
}
|
}
|
||||||
|
if (!intent.getAction().equals(Intent.ACTION_PACKAGE_REMOVED) && uid > 0 && ConfigManager.getInstance().isManager(packageName)) {
|
||||||
|
try {
|
||||||
|
ConfigManager.getInstance().grantManagerPermission();
|
||||||
|
} catch (Throwable e) {
|
||||||
|
Log.e(TAG, Log.getStackTraceString(e));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,4 +43,9 @@ public class PackageService {
|
||||||
}
|
}
|
||||||
return new ParceledListSlice<>(res);
|
return new ParceledListSlice<>(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void grantRuntimePermission(String packageName, String permissionName, int userId) throws RemoteException {
|
||||||
|
IPackageManager pm = getPackageManager();
|
||||||
|
pm.grantRuntimePermission(packageName, permissionName, userId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,12 @@ public class ServiceManager {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
ConfigManager.getInstance().grantManagerPermission();
|
||||||
|
} catch (Throwable e) {
|
||||||
|
Log.e(TAG, Log.getStackTraceString(e));
|
||||||
|
}
|
||||||
|
|
||||||
Looper.loop();
|
Looper.loop();
|
||||||
|
|
||||||
Log.i(TAG, "server exited");
|
Log.i(TAG, "server exited");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue