Android 8 suporta permissões de tempo de execução para aplicativos abaixo de 6.0

precisar

Permissão de tempo de execução A permissão de tempo de execução foi introduzida apenas no Android 6.0. Os aplicativos que executam o Android 5 e versões anteriores no SDK 6.0 e superior
não oferecem suporte à permissão de tempo de execução, mas obterão a permissão por padrão.
Como a autenticação de acesso à rede CTA exige que os aplicativos abaixo do Android 6 também tenham gerenciamento de permissão, o código-fonte do SDK precisa ser modificado.
Versões diferentes têm representações diferentes, leia outro artigo:
Desempenho de permissão de tempo de execução de versões do Android

concluir

O primeiro passo é desativar a função de obtenção de permissões por padrão ao instalar aplicativos abaixo do Android 6

diff --git a/base/services/core/java/com/android/server/pm/PackageInstallerService.java b/base/services/core/java/com/android/server/pm/PackageInstallerService.java
index 1fa37b91..3a3433c9 100644
--- a/base/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/base/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -436,6 +436,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub {
             params.installFlags |= PackageManager.INSTALL_FROM_ADB;
 
         } else {
+            mAppOps = mContext.getSystemService(AppOpsManager.class);
             mAppOps.checkPackage(callingUid, installerPackageName);
 
             params.installFlags &= ~PackageManager.INSTALL_FROM_ADB;
@@ -705,6 +706,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub {
     @Override
     public ParceledListSlice<SessionInfo> getMySessions(String installerPackageName, int userId) {
         mPm.enforceCrossUserPermission(Binder.getCallingUid(), userId, true, false, "getMySessions");
+        mAppOps = mContext.getSystemService(AppOpsManager.class);
         mAppOps.checkPackage(Binder.getCallingUid(), installerPackageName);
 
         final List<SessionInfo> result = new ArrayList<>();
diff --git a/base/services/core/java/com/android/server/pm/PackageManagerService.java b/base/services/core/java/com/android/server/pm/PackageManagerService.java
index aa43008b..5f0f66a4 100644
--- a/base/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/base/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -2279,8 +2279,9 @@ public class P

Supongo que te gusta

Origin blog.csdn.net/zmlovelx/article/details/129219054
Recomendado
Clasificación