| /* | |
| * Copyright (C) 2016 The Android Open Source Project | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file | |
| * except in compliance with the License. You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software distributed under the | |
| * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| * KIND, either express or implied. See the License for the specific language governing | |
| * permissions and limitations under the License. | |
| */ | |
| package com.android.settings.datausage; | |
| import com.android.settings.SettingsPreferenceFragment; | |
| import com.android.settingslib.NetworkPolicyEditor; | |
| import android.content.Context; | |
| import android.net.INetworkStatsService; | |
| import android.net.NetworkPolicy; | |
| import android.net.NetworkPolicyManager; | |
| import android.os.Bundle; | |
| import android.os.INetworkManagementService; | |
| import android.os.RemoteException; | |
| import android.os.ServiceManager; | |
| import android.os.UserManager; | |
| import android.telephony.SubscriptionManager; | |
| import android.telephony.TelephonyManager; | |
| import android.util.Log; | |
| public abstract class DataUsageBase extends SettingsPreferenceFragment { | |
| private static final String TAG = "DataUsageBase"; | |
| protected final TemplatePreference.NetworkServices services = | |
| new TemplatePreference.NetworkServices(); | |
| @Override | |
| public void onCreate(Bundle icicle) { | |
| super.onCreate(icicle); | |
| final Context context = getActivity(); | |
| services.mNetworkService = INetworkManagementService.Stub.asInterface( | |
| ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE)); | |
| services.mStatsService = INetworkStatsService.Stub.asInterface( | |
| ServiceManager.getService(Context.NETWORK_STATS_SERVICE)); | |
| services.mPolicyManager = NetworkPolicyManager.from(context); | |
| services.mPolicyEditor = new NetworkPolicyEditor(services.mPolicyManager); | |
| services.mTelephonyManager = TelephonyManager.from(context); | |
| services.mSubscriptionManager = SubscriptionManager.from(context); | |
| services.mUserManager = UserManager.get(context); | |
| } | |
| @Override | |
| public void onResume() { | |
| super.onResume(); | |
| services.mPolicyEditor.read(); | |
| } | |
| protected boolean isAdmin() { | |
| return services.mUserManager.isAdminUser(); | |
| } | |
| protected boolean isMobileDataAvailable(int subId) { | |
| return services.mSubscriptionManager.getActiveSubscriptionInfo(subId) != null; | |
| } | |
| protected boolean isNetworkPolicyModifiable(NetworkPolicy policy, int subId) { | |
| return policy != null && isBandwidthControlEnabled() && services.mUserManager.isAdminUser() | |
| && isDataEnabled(subId); | |
| } | |
| private boolean isDataEnabled(int subId) { | |
| if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { | |
| return true; | |
| } | |
| return services.mTelephonyManager.getDataEnabled(subId); | |
| } | |
| protected boolean isBandwidthControlEnabled() { | |
| try { | |
| return services.mNetworkService.isBandwidthControlEnabled(); | |
| } catch (RemoteException e) { | |
| Log.w(TAG, "problem talking with INetworkManagementService: " + e); | |
| return false; | |
| } | |
| } | |
| } |