首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取W/Activity:一次只能请求一组权限

获取W/Activity:一次只能请求一组权限
EN

Stack Overflow用户
提问于 2017-02-04 08:44:09
回答 7查看 16.9K关注 0票数 11

我做了一个应用程序,有一个相机和GPS的请求,但当我执行时,我收到了几次这个警告,彼此之间不到1秒。

W/Activity:一次只能请求一组权限)

有人能告诉我为什么吗?

代码语言:javascript
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent intent = getIntent();
    mStatusCamera = intent.getStringExtra("camera");
    mScannerView = new ZXingScannerView(this) {

        @Override
        protected IViewFinder createViewFinderView(Context context) {
            return new CustomZXingScannerView(context);
        }

    };
    List<BarcodeFormat> formats = new ArrayList<>();
    mListaPassageiros = new ArrayList<>();
    formats.add(BarcodeFormat.QR_CODE);
    setContentView(mScannerView);
    int currentapiVersion = android.os.Build.VERSION.SDK_INT;
    if (currentapiVersion >= android.os.Build.VERSION_CODES.M) {
        if (!checkPermission()) {
            requestPermission();
        } else {
            executarDepoisDaPermissao();
        }
    }
}
private boolean checkPermission() {
    return (ContextCompat.checkSelfPermission(getApplicationContext(), CAMERA) == PackageManager.PERMISSION_GRANTED
    && ContextCompat.checkSelfPermission(getApplicationContext(), ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED
    && ContextCompat.checkSelfPermission(getApplicationContext(), ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED);
}

public void executarDepoisDaPermissao() {
    final BancoController crud = new BancoController(getBaseContext());
    mConectado = isNetworkAvailable();
}

根据请求添加RequestPermissio。

代码语言:javascript
复制
 private void requestPermission() {
    int currentapiVersion = android.os.Build.VERSION.SDK_INT;
    if (currentapiVersion >= android.os.Build.VERSION_CODES.M) {
        if (!checkPermission()) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA,
                    Manifest.permission.ACCESS_FINE_LOCATION,
                    Manifest.permission.ACCESS_COARSE_LOCATION}, ASK_MULTIPLE_PERMISSION_REQUEST_CODE);
        }
    }

}

我能那样用吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2017-02-04 09:55:35

我认为问题是你要求两个位置权限,你应该只要求好的位置,这将对粗略和精细都有效。

票数 7
EN

Stack Overflow用户

发布于 2017-02-04 09:36:12

所以,我在这里看不到你的requestPermission()方法,但是你不应该同时发送多个权限请求。

您应该发出一个具有所有权限的请求。

代码语言:javascript
复制
int permissions_code = 42; 
String[] permissions = {Manifest.permission.CAMERA, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION};

if(!hasPermissions(this, permissions)){
    ActivityCompat.requestPermissions(this, permissions, permissions_code);
}
票数 10
EN

Stack Overflow用户

发布于 2017-09-22 15:05:19

对于遇到此issue..You的任何其他人,需要按顺序请求权限,如下所示:

代码语言:javascript
复制
onRequestPermissionResult(){
case permission1:
 if (permission1.aquired()){
....//do what you do
 requestPermission2();
 }
 case permission2:
 if (permission2.aquired()){
....//do what you do
 requestPermission3();
 }

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42035244

复制
相关文章

相似问题

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