diff options
author | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-01-09 06:35:41 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-01-09 06:35:41 +0000 |
commit | dc047e574654b222949520cd6267557c024b5e77 (patch) | |
tree | 24bd270f4a5954f8e1b3553b025196924513db28 /src/com/android/settings/datausage | |
parent | 824095f728ae62c4d977eef541a808c6e426d722 (diff) | |
parent | c0b35513101c903d195e543b1f4feb5750632cf0 (diff) | |
download | packages_apps_Settings-dc047e574654b222949520cd6267557c024b5e77.tar.gz packages_apps_Settings-dc047e574654b222949520cd6267557c024b5e77.tar.bz2 packages_apps_Settings-dc047e574654b222949520cd6267557c024b5e77.zip |
Merge "[Settings] Avoid from accessing createManageSubscriptionIntent(int)" am: d792d20001 am: 77cc57d9c2 am: c0b3551310
Change-Id: I340af8aee92498660f7bc65cdf5540d37a2fa148
Diffstat (limited to 'src/com/android/settings/datausage')
-rw-r--r-- | src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java b/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java index 600b9e8236..a26e3591cb 100644 --- a/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java +++ b/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java @@ -19,8 +19,11 @@ package com.android.settings.datausage; import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; +import android.net.INetworkPolicyManager; import android.net.NetworkPolicyManager; import android.net.NetworkTemplate; +import android.os.ServiceManager; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.SubscriptionPlan; @@ -296,12 +299,51 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll mSnapshotTime = primaryPlan.getDataUsageTime(); } } - mManageSubscriptionIntent = - mSubscriptionManager.createManageSubscriptionIntent(mSubscriptionId); + mManageSubscriptionIntent = createManageSubscriptionIntent(mSubscriptionId); Log.i(TAG, "Have " + mDataplanCount + " plans, dflt sub-id " + mSubscriptionId + ", intent " + mManageSubscriptionIntent); } + /** + * Create an {@link Intent} that can be launched towards the carrier app + * that is currently defining the billing relationship plan through + * {@link INetworkPolicyManager#setSubscriptionPlans(int, SubscriptionPlan [], String)}. + * + * @return ready to launch Intent targeted towards the carrier app, or + * {@code null} if no carrier app is defined, or if the defined + * carrier app provides no management activity. + */ + private Intent createManageSubscriptionIntent(int subId) { + final INetworkPolicyManager iNetPolicyManager = INetworkPolicyManager.Stub.asInterface( + ServiceManager.getService(Context.NETWORK_POLICY_SERVICE)); + String owner = ""; + try { + owner = iNetPolicyManager.getSubscriptionPlansOwner(subId); + } catch (Exception ex) { + Log.w(TAG, "Fail to get subscription plan owner for subId " + subId, ex); + } + + if (TextUtils.isEmpty(owner)) { + return null; + } + + final List<SubscriptionPlan> plans = mSubscriptionManager.getSubscriptionPlans(subId); + if (plans.isEmpty()) { + return null; + } + + final Intent intent = new Intent(SubscriptionManager.ACTION_MANAGE_SUBSCRIPTION_PLANS); + intent.setPackage(owner); + intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, subId); + + if (mActivity.getPackageManager().queryIntentActivities(intent, + PackageManager.MATCH_DEFAULT_ONLY).isEmpty()) { + return null; + } + + return intent; + } + public static SubscriptionPlan getPrimaryPlan(SubscriptionManager subManager, int primaryId) { List<SubscriptionPlan> plans = subManager.getSubscriptionPlans(primaryId); if (CollectionUtils.isEmpty(plans)) { |