首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >android.permission.WRITE_SETTINGS只授予系统应用程序吗?

android.permission.WRITE_SETTINGS只授予系统应用程序吗?
EN

Stack Overflow用户
提问于 2020-07-31 12:46:56
回答 2查看 5.8K关注 0票数 10

我们目前正在开发一个应用程序,我们想要改变一些系统设置,当然有用户的许可。android文档指出,要做到这一点,必须添加以下权限:

代码语言:javascript
运行
复制
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

另外,还必须显式地要求用户启用此权限。https://developer.android.com/reference/android/Manifest.permission#WRITE_SETTINGS的一段节选说:

备注:如果应用程序的目标是API 23或更高级别,则应用程序用户必须通过权限管理屏幕显式授予应用程序该权限。该应用程序通过发送带有动作Settings.ACTION_MANAGE_WRITE_SETTINGS的意图来请求用户的批准。该应用程序可以通过调用Settings.System.canWrite()来检查它是否具有此授权。

到目前为止,这是相当清楚的。然而,当权限被添加到AndroidManifest.xml文件中时,Android抱怨说“权限只授予系统应用程序”。现在,这是令人困惑的,因为我还没有发现任何文档说明它确实只被授予了系统应用程序。

那么,我想问一下,是否有人遇到过这个问题,以及是否有某种文档详细解释了这一点?还是我只是遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-31 13:32:30

正如用户passsyBrian提供的堆栈溢出question中所述,android.permission.WRITE_SETTINGS具有android:protectionLevel of "signature",这使得自API 23以来用户应用程序中的权限不可用。

有关权限保护级别的说明,请参见https://developer.android.com/guide/topics/manifest/permission-element#plevel

票数 3
EN

Stack Overflow用户

发布于 2020-07-31 15:22:23

您需要从用户那里获得用户权限,我的意思是,您必须将用户带到屏幕上,用户可以在屏幕上授予您的应用程序获得WRITE_SETTINGS权限的权限。

因此,当您想要更改系统设置时,您必须检查用户是否已经授予了该权限:

代码语言:javascript
运行
复制
private boolean checkSystemWritePermission() {
    boolean retVal = true;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        retVal = Settings.System.canWrite(this);
        Log.d("TAG", "Can Write Settings: " + retVal);
        if(retVal){
            ///Permission granted by the user
        }else{
            //permission not granted navigate to permission screen
            openAndroidPermissionsMenu();
        }
    }
    return retVal;
}

private void openAndroidPermissionsMenu() {
    Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
    intent.setData(Uri.parse("package:" + this.getPackageName()));
    startActivity(intent);
 }
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63192108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档