android - 处理 ACTION_MANAGE_WRITE_SETTINGS Activity 的正确方法

标签 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,因此进一步的代码无法正常工作。

最佳答案

An ACTION_MANAGE_WRITE_SETTINGS is not documented to return a result. Most activities do not return a result.

也许它没有记录在案,但正如您自己注意到的,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;
        }
  }

关于android - 处理 ACTION_MANAGE_WRITE_SETTINGS Activity 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44389632/

相关文章:

android - Cordova,在 Ubuntu 14.04 上添加 android 平台时出错

java - 通过传递导致应用程序失败的值来一个接一个地调用异步任务以进行 Web 服务调用

android - 无法在 Android 10 (Q) 中使用 glide 从设备加载图像

android - 如何从 Android NDK .so 文件中去除符号?

android - NDK 版本的 Gradle 构建错误 - 与 android.ndkVersion 不一致的 ndk.dir 版本

android - 如何在 Android 中模拟数据库

android - 单击按钮停止记录加速度计数据

android - fragment 管理器是否在方向改变后恢复屏幕上最后显示的 fragment ?

android - 在 oncreate 方法中获取 NFC 唯一 ID

android - LiveData 未在 postValue() 上更新