Settings应用动态可否使用。进入Settings需要密码。

Settings应用动态可否使用:

frameworks/ base/services/core/java/com/android/server/BatteryService.java

里面

接收广播

      else if(action.equals("com.intent.switch.setting")){
                        Boolean data =intent.getBooleanExtra("enable", true);
                        android.util.Log.d("yantao","com.intent.switch.setting:");
                       android.provider.Settings.System.putInt(mContext.getContentResolver(),"def_setting_show",data?1:0);
                        }

vendor/mediatek/proprietary/packages/apps/MtkSettings/

src/com/android/settings/SettingsActivity.java

在onResume方法最后加入,如果放在oncreate那么当设置在后台运行的时候接到关闭广播就没用了

    if(android.provider.Settings.System.getInt(getApplicationContext().getContentResolver(),"def_setting_show",1)==0){
                    finish();
                }

进入Settings需要密码:

src/com/android/settings/SettingsActivity.java

在onResume方法最后加入

    if(android.provider.Settings.System.getInt(getApplicationContext().getContentResolver(),"def_opensetting",1)==1  ){
                   need_password("361606");
                }

关键方法和导包,这个就是弹出一个简单的对话框,放在了顶部

    import android.widget.EditText;
    import android.app.AlertDialog;
    import android.view.WindowManager;
    import android.content.DialogInterface;
    import android.view.View.OnClickListener;
    import android.text.TextUtils;
    import android.text.InputType;
    import android.view.Gravity;
     
    publicvoid need_password(String mypassword) {
           try{
                 final EditText et = new EditText(getApplicationContext());
                 et.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
                 AlertDialog.Builder builder = newAlertDialog.Builder(getApplicationContext());
                 builder.setMessage(R.string.password_title);
                 builder.setIcon(android.R.drawable.sym_def_app_icon);
                 builder.setView(et);
                 builder.setPositiveButton(R.string.password_confirm, newDialogInterface.OnClickListener() {
                         @Override
                         public void onClick(DialogInterfacedialogInterface, int i) {
                                String Pwd = mypassword;
                                if (Pwd == null || TextUtils.isEmpty(Pwd)){
                                       Pwd ="ntxcfbsjtwo970#";
                                }
                                if (et.getText().toString().equals(Pwd)) {
                                      android.provider.Settings.System.putInt(getApplicationContext().getContentResolver(),"def_opensetting", 0);
                                } else {
                                       android.widget.Toast.makeText(getApplicationContext(),R.string.password_mistake, android.widget.Toast.LENGTH_LONG).show();
                                       finish();
                                }
                         }
                 }).setNegativeButton(R.string.password_cancel, newDialogInterface.OnClickListener() {
                         @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                                finish();
                         }
                 });
                 final AlertDialog dialog = builder.create();
                 dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);  //android.permission.SYSTEM_ALERT_WINDOW
                 dialog.setCancelable(false);
                 dialog.getWindow().setGravity(Gravity.TOP);
                 dialog.show();
           }catch (NullPointerException e) {
                 e.printStackTrace();
           }
        }

所需要的字符串

    <string name="password_title">Please enter the password</string>
        <string name="password_correct">Password is correct</string>
        <string name="password_mistake">Password mistake</string>
        <string name="password_confirm">Confirm</string>
        <string name="password_cancel">Cancel</string>
     
    <string name="password_title">请输入密码</string>
        <string name="password_correct">密码正确</string>
        <string name="password_mistake">密码错误</string>
        <string name="password_confirm">确认</string>
        <string name="password_cancel">取消</string>

所得:

系统层数据存储传输,Settings.System.也可以Global,Secure,后面字符串自定义。这个清除应用数据不会消除,能消除的是SharedPreference

android.provider.Settings.System.putInt(mContext.getContentResolver(),"def_setting_show",data?1:0);

android.provider.Settings.System.getInt(getApplicationContext().getContentResolver(),"def_setting_show",1)

AlertDialog和Dialog

Dialog 有dismiss方法。AlertDialog 没有。如果要使用需要create() 方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Youth King

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值