需求描述
打开设置流量警告–>弹窗提示:
Alert me when I've used this amount of mobile data
解决方案
主要是在BillingCycleSettings.java类中
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (mEnableDataLimit == preference) {
boolean enabled = (Boolean) newValue;
if (!enabled) {
setPolicyLimitBytes(LIMIT_DISABLED);
return true;
}
ConfirmLimitFragment.show(this);
// This preference is enabled / disabled by ConfirmLimitFragment.
return false;
} else if (mEnableDataWarning == preference) {
boolean enabled = (Boolean) newValue;
if (enabled) {
ConfirmWarningFragment.show(this);//[TASK]-Add-BEGIN by
setPolicyWarningBytes(mDataUsageController.getDefaultWarningLevel());
} else {
setPolicyWarningBytes(WARNING_DISABLED);
}
return true;
}
return false;
}
添加方法
//[TASK]-Add-BEGIN by
/**
* Dialog to request user confirWarningmation before setting.
*/
public static class ConfirmWarningFragment extends InstrumentedDialogFragment implements
DialogInterface.OnClickListener {
private static final String EXTRA_MESSAGE = "message";
public static void show(BillingCycleSettings parent) {
if (!parent.isAdded()) return;
final Resources res = parent.getResources();
final CharSequence message;
message = res.getString(R.string.set_data_warning_message);
final Bundle args = new Bundle();
args.putCharSequence(EXTRA_MESSAGE, message);
final ConfirmWarningFragment dialog = new ConfirmWarningFragment();
dialog.setArguments(args);
dialog.setTargetFragment(parent, 0);
dialog.show(parent.getFragmentManager(), TAG_CONFIRM_WARNING);
}
@Override
public int getMetricsCategory() {
return MetricsEvent.TYPE_UNKNOWN;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Context context = getActivity();
final CharSequence message = getArguments().getCharSequence(EXTRA_MESSAGE);
return new AlertDialog.Builder(context)
.setTitle(null)
.setMessage(R.string.set_data_warning_message)
.setPositiveButton(android.R.string.ok, null)
.create();
}
@Override
public void onClick(DialogInterface dialog, int which) {
}
}
//[TASK]-Add-END by
对应字符串
<!-- [TASK]-Add-BEGIN by -->
<string name="set_data_warning_message">Alert me when I\'ve used this amount of mobile data.</string>
<!-- [TASK]-Add-END by -->
注意
MetricsEvent.TYPE_UNKNOWN;表示未知类型,默认0,如果需要其他功能,可以去查看MetricsEvent下面的一些参数。