首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何请求安卓权限API >= 23?

如何请求安卓权限API >= 23?
EN

Stack Overflow用户
提问于 2016-06-11 22:56:07
回答 1查看 2.1K关注 0票数 0

你好,晚上好,

我有一个问题,这是在我的MainActivity是否有权请求许可的外部卡,阅读,全球定位系统等?

在我的onCreate里

checkPermissions();

那就有

代码语言:javascript
复制
private void checkPermissions() {
    ActivityCompat.requestPermissions(this,new String[]{
            Manifest.permission.ACCESS_FINE_LOCATION}, 1);

    ActivityCompat.requestPermissions(this,new String[]{
            Manifest.permission.ACCESS_COARSE_LOCATION}, 2);

    ActivityCompat.requestPermissions(this,new String[]{
            Manifest.permission.READ_EXTERNAL_STORAGE}, 3);

}

public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case 1: {
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            } else {
            }
            return;
        }
        case 2: {
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            } else {
            }
            return;
        }
        case 3: {
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            } else {
            }
            return;
        }
    }
}

那还能优化吗?权限会被查询吗?还是我完全错了?

谢谢你的回答

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-11 23:30:35

首先,您需要在AndroidManifest.xml中声明权限

代码语言:javascript
复制
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

不要请求onCreate中的所有权限,而是在使用它之前请求它们。对每个权限执行这样的方法,并在请求它之前检查是否已经拥有它。

代码语言:javascript
复制
private void checkReadPermission() {
    if (ContextCompat.checkSelfPermission(this,
            Manifest.permission.READ_EXTERNAL_STORAGE)
         != PackageManager.PERMISSION_GRANTED) {

         ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 3);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37769188

复制
相关文章

相似问题

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