Merge "Use new SmsController API for sending vvm sms." into qt-dev
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index bdc486b..97f62e8 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -90,6 +90,7 @@
import android.telephony.VisualVoicemailSmsFilterSettings;
import android.telephony.cdma.CdmaCellLocation;
import android.telephony.data.ApnSetting;
+import android.telephony.data.ApnSetting.ApnType;
import android.telephony.emergency.EmergencyNumber;
import android.telephony.gsm.GsmCellLocation;
import android.telephony.ims.ProvisioningManager;
@@ -3843,7 +3844,7 @@
int command, int p1, int p2, int p3, String data) {
final long identity = Binder.clearCallingIdentity();
try {
- if (channel < 0) {
+ if (channel <= 0) {
return "";
}
@@ -4780,17 +4781,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
@@ -4829,29 +4832,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);
}
}
@@ -4860,6 +4860,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();
@@ -7033,8 +7042,7 @@
Phone phone = getPhone(subId);
if (phone == null) return false;
- boolean isMetered = ApnSettingUtils.isMeteredApnType(ApnSetting.getApnTypeString(
- apnType), phone);
+ boolean isMetered = ApnSettingUtils.isMeteredApnType(apnType, phone);
return !isMetered || phone.getDataEnabledSettings().isDataEnabled(apnType);
} finally {
Binder.restoreCallingIdentity(identity);
@@ -7042,7 +7050,7 @@
}
@Override
- public boolean isApnMetered(int apnType, int subId) {
+ public boolean isApnMetered(@ApnType int apnType, int subId) {
enforceReadPrivilegedPermission("isApnMetered");
// Now that all security checks passes, perform the operation as ourselves.
@@ -7051,8 +7059,7 @@
Phone phone = getPhone(subId);
if (phone == null) return true; // By default return true.
- return ApnSettingUtils.isMeteredApnType(ApnSetting.getApnTypeString(
- apnType), phone);
+ return ApnSettingUtils.isMeteredApnType(apnType, phone);
} finally {
Binder.restoreCallingIdentity(identity);
}