OSDN Git Service

notify netd about uid internet permission changes when package replaced
authorwangmingming1 <wangmingming1@xiaomi.com>
Wed, 14 Aug 2019 07:38:22 +0000 (15:38 +0800)
committerMaciej Zenczykowski <maze@google.com>
Fri, 20 Sep 2019 03:23:23 +0000 (03:23 +0000)
1. If a previous version of an app doesn't declare internet permission;
2. The User upgraded it to a new version and the new one does declare the
internet permission;
3. The new app are not allowed to access the internet until next boot

Bug: 137864893
Test: Manual, just make sure the onPackageChanged would be executed on package changes
Change-Id: I69cdbb16a027a9c4e974b32371b1f64a23a51a23
Signed-off-by: wangmingming1 <wangmingming1@xiaomi.com>
core/java/android/content/pm/PackageList.java
services/core/java/com/android/server/connectivity/PermissionMonitor.java

index f781758..e3eb2c5 100644 (file)
@@ -52,6 +52,13 @@ public class PackageList implements PackageListObserver, AutoCloseable {
     }
 
     @Override
+    public void onPackageChanged(String packageName, int uid) {
+        if (mWrappedObserver != null) {
+            mWrappedObserver.onPackageChanged(packageName, uid);
+        }
+    }
+
+    @Override
     public void onPackageRemoved(String packageName, int uid) {
         if (mWrappedObserver != null) {
             mWrappedObserver.onPackageRemoved(packageName, uid);
index fbe2589..29c4bad 100644 (file)
@@ -130,6 +130,11 @@ public class PermissionMonitor {
         }
 
         @Override
+        public void onPackageChanged(@NonNull String packageName, int uid) {
+            sendPackagePermissionsForUid(uid, getPermissionForUid(uid));
+        }
+
+        @Override
         public void onPackageRemoved(String packageName, int uid) {
             sendPackagePermissionsForUid(uid, getPermissionForUid(uid));
         }