[Settings]添加流量警告弹框

需求描述

打开设置流量警告–>弹窗提示:

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下面的一些参数。

猜你喜欢

转载自blog.csdn.net/ouzhuangzhuang/article/details/83182411
今日推荐