am ea9f961c: am d56958c4: Merge "Ignore carrier apps when checking for idleness" into mnc-dev

* commit 'ea9f961ce22c7d0784506beb608714401b8079e9':
  Ignore carrier apps when checking for idleness
This commit is contained in:
Zach Johnson
2015-06-09 00:24:42 +00:00
committed by Android Git Automerger
4 changed files with 36 additions and 4 deletions

View File

@@ -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();

View File

@@ -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);

View File

@@ -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) {
@@ -3671,6 +3671,21 @@ public class TelephonyManager {
return CARRIER_PRIVILEGE_STATUS_NO_ACCESS;
}
/** @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) {

View File

@@ -740,9 +740,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