Das Android-Framework erlaubt keine Installation von Anwendungen, die aus dem App Store heruntergeladen wurden, adb und pm können jedoch normal installiert werden.

1. Umwelt

Qualcomm 865 Android10

2. Szenario

Die Installation von Anwendungen, die aus dem Anwendungsspeicher heruntergeladen wurden, ist auf der Framework-Ebene verboten. ADB und PM können normal installiert werden.

3. Code-Implementierung

Frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java
@@ -35,6 +35,7 @@ import android.os.Build;
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.util.Log;
+import android.provider.Settings;
 
 /**
  * Select which activity is the first visible activity of the installation and forward the intent to
@@ -46,10 +47,23 @@ public class InstallStart extends Activity {
     private static final String DOWNLOADS_AUTHORITY = "downloads";
     private IPackageManager mIPackageManager;
     private boolean mAbortInstall = false;
+    int installState = 0;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+		installState = Settings.Global.getInt(getContentResolver(), "installState", 0);
+		if(installState == 0){
+			finish();
+			return;	
+		}
+
+		Settings.Global.putInt(getContentResolver(), "installState", 0);
+
+
+
         mIPackageManager = AppGlobals.getPackageManager();
         Intent intent = getIntent();
         String callingPackage = getCallingPackage();
Frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
@@ -246,15 +246,6 @@ public class PackageInstallerActivity extends AlertActivity {
     }
 
     private void initiateInstall() {
-        Log.d(TAG," initiateInstall uid : " + Process.myUid()/100000 );
-        if((Process.myUid()/100000) != Process.ROOT_UID
-            && (Process.myUid()/100000) != Process.SHELL_UID){
-			return;
-        }
-
-
         String pkgName = mPkgInfo.packageName;
         // Check if there is already a package on the device with this name
         // but it has been renamed to something else.

 

Guess you like

Origin blog.csdn.net/banzhuantuqiang/article/details/133943289