From 04baf117bfb3e44e0f9be44e5be0d7a73045b59b Mon Sep 17 00:00:00 2001 From: Ricky Wai Date: Tue, 20 Mar 2018 14:20:54 +0000 Subject: [PATCH 1/3] Improve ConnectivityManager.getNetworkWatchlistConfigHash() javadoc Test: NULL Bug: 74831039 Change-Id: I227ba1377a51821204cd5830e7da6ff3a15bca02 --- core/java/android/net/ConnectivityManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index 36f359ba04..82f79d313c 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -3858,8 +3858,8 @@ public class ConnectivityManager { /** * The network watchlist is a list of domains and IP addresses that are associated with - * potentially harmful apps. This method returns the hash of the watchlist currently - * used by the system. + * potentially harmful apps. This method returns the SHA-256 of the watchlist config file + * currently used by the system for validation purposes. * * @return Hash of network watchlist config file. Null if config does not exist. */ From 32928412a20ff72eeb24d58c03cfd389fa3a95dc Mon Sep 17 00:00:00 2001 From: mswest46 Date: Mon, 12 Mar 2018 10:34:34 -0700 Subject: [PATCH 2/3] add airplane mode shell commands to connectivity Fixes: 74410990 Test: Manually checked that commands enable/disable airplane mode. Change-Id: I942bd4679fcd498a39b9b2cab68e8d3c00ce62d3 --- .../android/server/ConnectivityService.java | 61 ++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 30d31b8496..125c60cbc9 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -101,6 +101,8 @@ import android.os.RemoteException; import android.os.ResultReceiver; import android.os.ServiceManager; import android.os.ServiceSpecificException; +import android.os.ShellCallback; +import android.os.ShellCommand; import android.os.SystemClock; import android.os.UserHandle; import android.os.UserManager; @@ -5844,4 +5846,61 @@ public class ConnectivityService extends IConnectivityManager.Stub private static int encodeBool(boolean b) { return b ? 1 : 0; } -} + + @Override + public void onShellCommand(FileDescriptor in, FileDescriptor out, + FileDescriptor err, String[] args, ShellCallback callback, + ResultReceiver resultReceiver) { + (new ShellCmd()).exec(this, in, out, err, args, callback, resultReceiver); + } + + private class ShellCmd extends ShellCommand { + + @Override + public int onCommand(String cmd) { + if (cmd == null) { + return handleDefaultCommands(cmd); + } + final PrintWriter pw = getOutPrintWriter(); + try { + switch (cmd) { + case "airplane-mode": + final String action = getNextArg(); + if ("enable".equals(action)) { + setAirplaneMode(true); + return 0; + } else if ("disable".equals(action)) { + setAirplaneMode(false); + return 0; + } else if (action == null) { + final ContentResolver cr = mContext.getContentResolver(); + final int enabled = Settings.Global.getInt(cr, + Settings.Global.AIRPLANE_MODE_ON); + pw.println(enabled == 0 ? "disabled" : "enabled"); + return 0; + } else { + onHelp(); + return -1; + } + default: + return handleDefaultCommands(cmd); + } + } catch (Exception e) { + pw.println(e); + } + return -1; + } + + @Override + public void onHelp() { + PrintWriter pw = getOutPrintWriter(); + pw.println("Connectivity service commands:"); + pw.println(" help"); + pw.println(" Print this help text."); + pw.println(" airplane-mode [enable|disable]"); + pw.println(" Turn airplane mode on or off."); + pw.println(" airplane-mode"); + pw.println(" Get airplane mode."); + } + } +} \ No newline at end of file From 2f6bcd9c06390c057629c42f9c553c39f874e322 Mon Sep 17 00:00:00 2001 From: Tony Mak Date: Mon, 26 Mar 2018 12:38:04 +0100 Subject: [PATCH 3/3] Get application info in the correct user id Fixes: 76396560 Test: Create work profile and launch hangouts in work profile. Change-Id: Ic3727ac899153b6a96dd9b6d6921c32ba0bbd93e --- .../com/android/server/connectivity/PermissionMonitor.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/connectivity/PermissionMonitor.java b/services/core/java/com/android/server/connectivity/PermissionMonitor.java index d578e95931..e471c7d84b 100644 --- a/services/core/java/com/android/server/connectivity/PermissionMonitor.java +++ b/services/core/java/com/android/server/connectivity/PermissionMonitor.java @@ -202,7 +202,9 @@ public class PermissionMonitor { // Only using the first package name. There may be multiple names if multiple // apps share the same UID, but in that case they also share permissions so // querying with any of the names will return the same results. - final PackageInfo app = mPackageManager.getPackageInfo(names[0], GET_PERMISSIONS); + int userId = UserHandle.getUserId(uid); + final PackageInfo app = mPackageManager.getPackageInfoAsUser( + names[0], GET_PERMISSIONS, userId); return hasUseBackgroundNetworksPermission(app); } catch (NameNotFoundException e) { // App not found.