Merge "Fixed incorrect metered/unmetered APN in AP-assisted mode" into qt-dev
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index b96779a..10da3c6 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -3856,7 +3856,7 @@
int command, int p1, int p2, int p3, String data) {
final long identity = Binder.clearCallingIdentity();
try {
- if (channel < 0) {
+ if (channel <= 0) {
return "";
}
@@ -4793,17 +4793,19 @@
}
@Override
- public int checkCarrierPrivilegesForPackage(String pkgName) {
- final Phone defaultPhone = getDefaultPhone();
- if (TextUtils.isEmpty(pkgName))
+ public int checkCarrierPrivilegesForPackage(int subId, String pkgName) {
+ if (TextUtils.isEmpty(pkgName)) {
return TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS;
- UiccCard card = UiccController.getInstance().getUiccCard(defaultPhone.getPhoneId());
+ }
+
+ int phoneId = SubscriptionManager.getPhoneId(subId);
+ UiccCard card = UiccController.getInstance().getUiccCard(phoneId);
if (card == null) {
- loge("checkCarrierPrivilegesForPackage: No UICC");
+ loge("checkCarrierPrivilegesForPackage: No UICC on subId " + subId);
return TelephonyManager.CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED;
}
- return card.getCarrierPrivilegeStatus(defaultPhone.getContext().getPackageManager(),
- pkgName);
+
+ return card.getCarrierPrivilegeStatus(mApp.getPackageManager(), pkgName);
}
@Override
@@ -4842,29 +4844,26 @@
}
@Override
- public List<String> getPackagesWithCarrierPrivileges() {
+ public List<String> getPackagesWithCarrierPrivileges(int phoneId) {
PackageManager pm = mApp.getPackageManager();
List<String> privilegedPackages = new ArrayList<>();
List<PackageInfo> packages = null;
- for (int i = 0; i < TelephonyManager.getDefault().getPhoneCount(); i++) {
- UiccCard card = UiccController.getInstance().getUiccCard(i);
- if (card == null) {
- // No UICC in that slot.
- continue;
- }
+ UiccCard card = UiccController.getInstance().getUiccCard(phoneId);
+ // has UICC in that slot.
+ if (card != null) {
if (card.hasCarrierPrivilegeRules()) {
if (packages == null) {
// Only check packages in user 0 for now
packages = pm.getInstalledPackagesAsUser(
PackageManager.MATCH_DISABLED_COMPONENTS
- | PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
- | PackageManager.GET_SIGNATURES, UserHandle.USER_SYSTEM);
+ | PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
+ | PackageManager.GET_SIGNATURES, UserHandle.USER_SYSTEM);
}
for (int p = packages.size() - 1; p >= 0; p--) {
PackageInfo pkgInfo = packages.get(p);
if (pkgInfo != null && pkgInfo.packageName != null
&& card.getCarrierPrivilegeStatus(pkgInfo)
- == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) {
+ == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) {
privilegedPackages.add(pkgInfo.packageName);
}
}
@@ -4873,6 +4872,15 @@
return privilegedPackages;
}
+ @Override
+ public List<String> getPackagesWithCarrierPrivilegesForAllPhones() {
+ List<String> privilegedPackages = new ArrayList<>();
+ for (int i = 0; i < TelephonyManager.getDefault().getPhoneCount(); i++) {
+ privilegedPackages.addAll(getPackagesWithCarrierPrivileges(i));
+ }
+ return privilegedPackages;
+ }
+
private String getIccId(int subId) {
final Phone phone = getPhone(subId);
UiccCard card = phone == null ? null : phone.getUiccCard();