Add ALLOW_METERED column to DownloadManager.

Also allow isActiveNetworkMetered() to inspect networks without
requiring ACCESS_WIFI_STATE.

Bug: 3001465
Change-Id: Ibc23577d4ad941e4f93db417be6b046881dcbfb1
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index 359074a..722e312 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -865,27 +865,39 @@
     @Override
     public NetworkQuotaInfo getActiveNetworkQuotaInfo() {
         enforceAccessPermission();
-        final NetworkState state = getNetworkStateUnchecked(mActiveDefaultNetwork);
-        if (state != null) {
-            try {
-                return mPolicyManager.getNetworkQuotaInfo(state);
-            } catch (RemoteException e) {
+
+        final long token = Binder.clearCallingIdentity();
+        try {
+            final NetworkState state = getNetworkStateUnchecked(mActiveDefaultNetwork);
+            if (state != null) {
+                try {
+                    return mPolicyManager.getNetworkQuotaInfo(state);
+                } catch (RemoteException e) {
+                }
             }
+            return null;
+        } finally {
+            Binder.restoreCallingIdentity(token);
         }
-        return null;
     }
 
     @Override
     public boolean isActiveNetworkMetered() {
         enforceAccessPermission();
-        final NetworkState state = getNetworkStateUnchecked(mActiveDefaultNetwork);
-        if (state != null) {
-            try {
-                return mPolicyManager.isNetworkMetered(state);
-            } catch (RemoteException e) {
+
+        final long token = Binder.clearCallingIdentity();
+        try {
+            final NetworkState state = getNetworkStateUnchecked(mActiveDefaultNetwork);
+            if (state != null) {
+                try {
+                    return mPolicyManager.isNetworkMetered(state);
+                } catch (RemoteException e) {
+                }
             }
+            return false;
+        } finally {
+            Binder.restoreCallingIdentity(token);
         }
-        return false;
     }
 
     public boolean setRadios(boolean turnOn) {