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();
                }

扫描二维码关注公众号,回复: 14833618 查看本文章

进入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() 方法

猜你喜欢

转载自blog.csdn.net/youthking1314/article/details/129622011
今日推荐