Hide tab when disabled, metered strings, fixes.
Hide "Data usage" item when kernel support isn't available and enabled. Change "restrict background" strings to reflect metered status. Hide app settings button when no package found. Always start limit sweep above any warning. Imply metered state for networks with limits. Bug: 6303364, 5465643, 5379686, 6376276, 6368329, 6376276 Change-Id: I4faccc9a50f2f741fd937bb8c361a3ca055135e2
This commit is contained in:
@@ -784,7 +784,7 @@ public class DataUsageSummary extends Fragment {
|
||||
|
||||
} else {
|
||||
mAppSettingsIntent = null;
|
||||
mAppSettings.setEnabled(false);
|
||||
mAppSettings.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
updateDetailData();
|
||||
@@ -1601,19 +1601,21 @@ public class DataUsageSummary extends Fragment {
|
||||
|
||||
final Resources res = parent.getResources();
|
||||
final CharSequence message;
|
||||
final long minLimitBytes = (long) (
|
||||
parent.mPolicyEditor.getPolicy(parent.mTemplate).warningBytes * 1.2f);
|
||||
final long limitBytes;
|
||||
|
||||
// TODO: customize default limits based on network template
|
||||
final String currentTab = parent.mCurrentTab;
|
||||
if (TAB_3G.equals(currentTab)) {
|
||||
message = res.getString(R.string.data_usage_limit_dialog_mobile);
|
||||
limitBytes = 5 * GB_IN_BYTES;
|
||||
limitBytes = Math.max(5 * GB_IN_BYTES, minLimitBytes);
|
||||
} else if (TAB_4G.equals(currentTab)) {
|
||||
message = res.getString(R.string.data_usage_limit_dialog_mobile);
|
||||
limitBytes = 5 * GB_IN_BYTES;
|
||||
limitBytes = Math.max(5 * GB_IN_BYTES, minLimitBytes);
|
||||
} else if (TAB_MOBILE.equals(currentTab)) {
|
||||
message = res.getString(R.string.data_usage_limit_dialog_mobile);
|
||||
limitBytes = 5 * GB_IN_BYTES;
|
||||
limitBytes = Math.max(5 * GB_IN_BYTES, minLimitBytes);
|
||||
} else {
|
||||
throw new IllegalArgumentException("unknown current tab: " + currentTab);
|
||||
}
|
||||
|
@@ -31,6 +31,9 @@ import android.content.pm.ActivityInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.PackageManager.NameNotFoundException;
|
||||
import android.os.Bundle;
|
||||
import android.os.INetworkManagementService;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ServiceManager;
|
||||
import android.os.UserId;
|
||||
import android.preference.Preference;
|
||||
import android.preference.PreferenceActivity;
|
||||
@@ -359,6 +362,17 @@ public class Settings extends PreferenceActivity implements ButtonBarHandler {
|
||||
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
|
||||
target.remove(header);
|
||||
}
|
||||
} else if (id == R.id.data_usage_settings) {
|
||||
// Remove data usage when kernel module not enabled
|
||||
final INetworkManagementService netManager = INetworkManagementService.Stub
|
||||
.asInterface(ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE));
|
||||
try {
|
||||
if (!netManager.isBandwidthControlEnabled()) {
|
||||
target.remove(header);
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
// ignored
|
||||
}
|
||||
} else if (id == R.id.user_settings) {
|
||||
if (!mEnableUserManagement
|
||||
|| !UserId.MU_ENABLED || UserId.myUserId() != 0
|
||||
|
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.settings.net;
|
||||
|
||||
import static android.net.NetworkPolicy.LIMIT_DISABLED;
|
||||
import static android.net.wifi.WifiInfo.removeDoubleQuotes;
|
||||
import static com.android.settings.DataUsageSummary.hasReadyMobileRadio;
|
||||
import static com.android.settings.DataUsageSummary.hasWifiRadio;
|
||||
@@ -106,19 +107,35 @@ public class DataUsageMeteredSettings extends SettingsPreferenceFragment {
|
||||
|
||||
private class MeteredPreference extends CheckBoxPreference {
|
||||
private final NetworkTemplate mTemplate;
|
||||
private boolean mBinding;
|
||||
|
||||
public MeteredPreference(Context context, NetworkTemplate template) {
|
||||
super(context);
|
||||
mTemplate = template;
|
||||
|
||||
setPersistent(false);
|
||||
setChecked(mPolicyEditor.getPolicyMetered(mTemplate));
|
||||
|
||||
mBinding = true;
|
||||
final NetworkPolicy policy = mPolicyEditor.getPolicy(template);
|
||||
if (policy != null) {
|
||||
if (policy.limitBytes != LIMIT_DISABLED) {
|
||||
setChecked(true);
|
||||
setEnabled(false);
|
||||
} else {
|
||||
setChecked(policy.metered);
|
||||
}
|
||||
} else {
|
||||
setChecked(false);
|
||||
}
|
||||
mBinding = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void notifyChanged() {
|
||||
super.notifyChanged();
|
||||
mPolicyEditor.setPolicyMetered(mTemplate, isChecked());
|
||||
if (!mBinding) {
|
||||
mPolicyEditor.setPolicyMetered(mTemplate, isChecked());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user