summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZach Johnson <zachoverflow@google.com>2015-05-19 00:02:27 -0700
committerZach Johnson <zachoverflow@google.com>2015-06-08 13:49:13 -0700
commitb4b9ca7580c75f07330e5222cbd9ccc93b12935e (patch)
tree99c18c384cf567d01d9771533608cee0c158a4d5
parent7631697793a8b82bb2a1cd3adced1b140d266427 (diff)
downloadframeworks_base-b4b9ca7580c75f07330e5222cbd9ccc93b12935e.zip
frameworks_base-b4b9ca7580c75f07330e5222cbd9ccc93b12935e.tar.gz
frameworks_base-b4b9ca7580c75f07330e5222cbd9ccc93b12935e.tar.bz2
Ignore carrier apps when checking for idleness
Also introduce a way to check if a package has carrier privileges for any active phone. Change-Id: If5c5fe07f05ffc90fc21431eb27cf48030c0175b
-rw-r--r--api/system-current.txt1
-rw-r--r--services/usage/java/com/android/server/usage/UsageStatsService.java11
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java19
-rw-r--r--telephony/java/com/android/internal/telephony/ITelephony.aidl9
4 files changed, 36 insertions, 4 deletions
diff --git a/api/system-current.txt b/api/system-current.txt
index 1c524c1..dad539b 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -33422,6 +33422,7 @@ package android.telephony {
method public void call(java.lang.String, java.lang.String);
method public boolean canChangeDtmfToneLength();
method public int checkCarrierPrivilegesForPackage(java.lang.String);
+ method public int checkCarrierPrivilegesForPackageAnyPhone(java.lang.String);
method public void dial(java.lang.String);
method public boolean disableDataConnectivity();
method public boolean enableDataConnectivity();
diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java
index 23057c4..633aee8 100644
--- a/services/usage/java/com/android/server/usage/UsageStatsService.java
+++ b/services/usage/java/com/android/server/usage/UsageStatsService.java
@@ -57,6 +57,7 @@ import android.os.SystemClock;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
+import android.telephony.TelephonyManager;
import android.util.ArraySet;
import android.util.AtomicFile;
import android.util.Log;
@@ -725,6 +726,10 @@ public class UsageStatsService extends SystemService implements
return false;
}
+ if (isCarrierApp(packageName)) {
+ return false;
+ }
+
if (mAppWidgetManager != null
&& mAppWidgetManager.isBoundWidgetPackage(packageName, userId)) {
return false;
@@ -754,6 +759,12 @@ public class UsageStatsService extends SystemService implements
return false;
}
+ private boolean isCarrierApp(String packageName) {
+ TelephonyManager telephonyManager = getContext().getSystemService(TelephonyManager.class);
+ return telephonyManager.checkCarrierPrivilegesForPackageAnyPhone(packageName)
+ == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS;
+ }
+
void informListeners(String packageName, int userId, boolean isIdle) {
for (AppIdleStateChangeListener listener : mPackageAccessListeners) {
listener.onAppIdleStateChanged(packageName, userId, isIdle);
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 86f7ec3..5d792d3 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -3658,11 +3658,11 @@ public class TelephonyManager {
/** @hide */
@SystemApi
- public int checkCarrierPrivilegesForPackage(String pkgname) {
+ public int checkCarrierPrivilegesForPackage(String pkgName) {
try {
ITelephony telephony = getITelephony();
if (telephony != null)
- return telephony.checkCarrierPrivilegesForPackage(pkgname);
+ return telephony.checkCarrierPrivilegesForPackage(pkgName);
} catch (RemoteException ex) {
Rlog.e(TAG, "checkCarrierPrivilegesForPackage RemoteException", ex);
} catch (NullPointerException ex) {
@@ -3673,6 +3673,21 @@ public class TelephonyManager {
/** @hide */
@SystemApi
+ public int checkCarrierPrivilegesForPackageAnyPhone(String pkgName) {
+ try {
+ ITelephony telephony = getITelephony();
+ if (telephony != null)
+ return telephony.checkCarrierPrivilegesForPackageAnyPhone(pkgName);
+ } catch (RemoteException ex) {
+ Rlog.e(TAG, "checkCarrierPrivilegesForPackageAnyPhone RemoteException", ex);
+ } catch (NullPointerException ex) {
+ Rlog.e(TAG, "checkCarrierPrivilegesForPackageAnyPhone NPE", ex);
+ }
+ return CARRIER_PRIVILEGE_STATUS_NO_ACCESS;
+ }
+
+ /** @hide */
+ @SystemApi
public List<String> getCarrierPackageNamesForIntent(Intent intent) {
return getCarrierPackageNamesForIntentAndPhone(intent, getDefaultPhone());
}
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index 11d0ea6..6a9a2c1 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -739,9 +739,14 @@ interface ITelephony {
int getCarrierPrivilegeStatus();
/**
- * Similar to above, but check for pkg whose name is pkgname.
+ * Similar to above, but check for the package whose name is pkgName.
*/
- int checkCarrierPrivilegesForPackage(String pkgname);
+ int checkCarrierPrivilegesForPackage(String pkgName);
+
+ /**
+ * Similar to above, but check across all phones.
+ */
+ int checkCarrierPrivilegesForPackageAnyPhone(String pkgName);
/**
* Returns list of the package names of the carrier apps that should handle the input intent