首页 > 解决方案 > 获得权限后如何立即调用函数?

问题描述

启动我的应用程序后,我向用户请求使用此功能的权限:

protected void requestPermission(){
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            requestPermissions(PERMISSIONS, 100);
        }
    }

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

requestPermission();
setCheckboxStates();

功能setCheckboxStates()在获得所有权限之前激活。我可以通过 using 部分解决这个问题,Thread.sleep()但它并非一直有效,有时看起来很奇怪。

如何在函数完成向用户询问权限setCheckboxStates()后立即调用函数?requestPermission()

标签: javaandroid-studio

解决方案


最好的方法你想做的是在你的活动中调用这个方法,名为onRequestPermissionsResult...

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

正如您刚刚上面的权限代码中输入...一样...这个...

protected void requestPermission(){
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            requestPermissions(PERMISSIONS, 100);
        }
    }

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

@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找到它


推荐阅读