处理ACTION_MANAGE_WRITE_SETTINGS活动的正确方法

时间:2017-06-06 12:08:46

标签: android

我想要写入设置权限才能启动便携式WLAN热点......

这就是我得到的,

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (!Settings.System.canWrite(getApplicationContext())) {
                Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:" + getPackageName()));
                startActivityForResult(intent, 200);
            }
        }

这是正常的,直到我在授予许可后按下按钮。

按下后退按钮后,resultCode始终为0,因此进一步的代码无法正常工作。

2 个答案:

答案 0 :(得分:1)

  

未记录ACTION_MANAGE_WRITE_SETTINGS以返回结果。大多数活动都不会返回结果。

也许它没有记录,但正如你发现自己总是有ACTION_MANAGE_WRITE_SETTINGS的结果。虽然resultCode始终为0,但结果会将您的原始requestCode移回原位。

因此,您可以使用此功能检查onActivityResult您是否拥有所要求的权限。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode){
            case REQUEST_CODE_WRITE_SYSTEM:
                boolean canWrite = Settings.System.canWrite(this);
                // Handle the result here
                break;
        }
  }

答案 1 :(得分:0)

  

按下后退按钮后,resultCode始终为0

未记录ACTION_MANAGE_WRITE_SETTINGS以返回结果。大多数活动都不会返回结果。

请勿致电startActivityForResult() - 只需使用startActivity()即可。如有需要,请致电Settings.System.canWrite(this)查看您是否获得许可。