首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在获得权限后立即调用函数?

如何在获得权限后立即调用函数?
EN

Stack Overflow用户
提问于 2019-11-25 12:30:01
回答 3查看 529关注 0票数 0

启动应用程序后,我向用户询问该函数的权限:

代码语言:javascript
复制
protected void requestPermission(){
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            requestPermissions(PERMISSIONS, 100);
        }
    }

在获得用户权限后,我需要将复选框设置为true或false,但如果我以这种方式调用函数:

代码语言:javascript
复制
requestPermission();
setCheckboxStates();

函数setCheckboxStates()在获得所有权限之前激活。我可以通过使用Thread.sleep()部分地解决这个问题,但是它并不总是工作,有时看起来很奇怪。

setCheckboxStates()函数询问用户权限之后,如何才能立即调用requestPermission()函数?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-25 13:06:36

实现的最佳方法是在名为onRequestPermissionsResult的活动中调用此方法.

此方法在用户权限对话框之后立即响应.

就像你刚才把..。在上面的许可代码中..。这个..。

代码语言:javascript
复制
protected void requestPermission(){
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            requestPermissions(PERMISSIONS, 100);
        }
    }

在这种情况下你发送的号码是100.你刚通过的那个号码,是你在onRequestPermissionsResult中使用的那个.以重新确定用户刚刚拥有的权限.这里是一个示例

代码语言:javascript
复制
@Override
    public void onRequestPermissionsResult(int requestCode,
                                           @NonNull String[] permissions,
                                           @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        switch (requestCode) {

            case 100:
                 --CODE HERE--
                break;
        }
    }

正如我之前告诉过你的,你传递的号码和你在这里识别权限的号码相同.

要找到这个方法,可以编写它,或者只需要按CTRL + O就可以了。

票数 3
EN

Stack Overflow用户

发布于 2019-11-25 12:47:49

android系统会通知你申请许可的结果。在用户授予(或拒绝)权限后,将调用方法onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)通知您。

本教程很好地解释了处理权限请求的过程。

票数 1
EN

Stack Overflow用户

发布于 2019-11-25 12:54:34

我想函数requestPermission( );requestPermissions( );是不同的,对吗?和逻辑,如果if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissions(PERMISSIONS, 100); }成功了,它会调用requestPermissions( );然后setCheckBoxStates( );的值为true,如果不是false..so,它就会像if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissions(PERMISSIONS, 100); setCheckBoxStates(true);} else {setCheckBoxStates(false);}一样

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

https://stackoverflow.com/questions/59031883

复制
相关文章

相似问题

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