summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorNate(Qiang) Jiang <qiangjiang@google.com>2020-02-26 09:43:51 -0800
committerNate(Qiang) Jiang <qiangjiang@google.com>2020-02-26 18:07:18 -0800
commitf771687761010c14f5187ea516d1c3f159eedead (patch)
treee6b0a82cffd9f7f6684208c8195dd658196a5f08 /service
parent861798ec8b5c8770bb883a101ceed513ef7954c4 (diff)
Consider app disabled same as app is removed
When app is disabled, remove all related saved network, suggestion and passpoint. Bug: 150247605 Test: atest com.android.server.wifi Change-Id: I274c148597cd27c7ea72ee60083b98519ca4236d
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/WifiServiceImpl.java65
1 files changed, 40 insertions, 25 deletions
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index acb060dfc..96a60f19b 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -40,6 +40,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ParceledListSlice;
import android.content.pm.ResolveInfo;
@@ -3051,36 +3052,50 @@ public class WifiServiceImpl extends BaseWifiService {
private void registerForBroadcasts() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_PACKAGE_FULLY_REMOVED);
+ intentFilter.addAction(Intent.ACTION_PACKAGE_CHANGED);
+ intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
intentFilter.addDataScheme("package");
mContext.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- if (action.equals(Intent.ACTION_PACKAGE_FULLY_REMOVED)) {
- int uid = intent.getIntExtra(Intent.EXTRA_UID, -1);
- Uri uri = intent.getData();
- if (uid == -1 || uri == null) {
- return;
- }
- String pkgName = uri.getSchemeSpecificPart();
-
- // Call the method in the main Wifi thread.
- mWifiThreadRunner.post(() -> {
- ApplicationInfo ai = new ApplicationInfo();
- ai.packageName = pkgName;
- ai.uid = uid;
- mWifiConfigManager.removeNetworksForApp(ai);
- mScanRequestProxy.clearScanRequestTimestampsForApp(pkgName, uid);
-
- // Remove all suggestions from the package.
- mWifiNetworkSuggestionsManager.removeApp(pkgName);
- mClientModeImpl.removeNetworkRequestUserApprovedAccessPointsForApp(pkgName);
-
- // Remove all Passpoint profiles from package.
- mWifiInjector.getPasspointManager().removePasspointProviderWithPackage(
- pkgName);
- });
+ int uid = intent.getIntExtra(Intent.EXTRA_UID, -1);
+ Uri uri = intent.getData();
+ if (uid == -1 || uri == null) {
+ Log.e(TAG, "Uid or Uri is missing for action:" + intent.getAction());
+ return;
+ }
+ String pkgName = uri.getSchemeSpecificPart();
+ PackageManager pm = context.getPackageManager();
+ PackageInfo packageInfo = null;
+ try {
+ packageInfo = pm.getPackageInfo(pkgName, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.e(TAG, "Couldn't get PackageInfo for package:" + pkgName);
+ return;
+ }
+ // If package is not removed or disabled, just ignore.
+ if (packageInfo != null
+ && packageInfo.applicationInfo != null
+ && packageInfo.applicationInfo.enabled) {
+ return;
}
+ Log.d(TAG, "Remove settings for package:" + pkgName);
+ // Call the method in the main Wifi thread.
+ mWifiThreadRunner.post(() -> {
+ ApplicationInfo ai = new ApplicationInfo();
+ ai.packageName = pkgName;
+ ai.uid = uid;
+ mWifiConfigManager.removeNetworksForApp(ai);
+ mScanRequestProxy.clearScanRequestTimestampsForApp(pkgName, uid);
+
+ // Remove all suggestions from the package.
+ mWifiNetworkSuggestionsManager.removeApp(pkgName);
+ mClientModeImpl.removeNetworkRequestUserApprovedAccessPointsForApp(pkgName);
+
+ // Remove all Passpoint profiles from package.
+ mWifiInjector.getPasspointManager().removePasspointProviderWithPackage(
+ pkgName);
+ });
}
}, intentFilter);
}