java - Android M 权限 : onRequestPermissionsResult() not being called

标签 java android permissions android-permissions

我正在更新我们的应用程序以使用新的 M 运行时权限系统。 除了 onRequestPermissionsResult() 之外,一切正常。我需要检查按钮按下的权限,如果成功,请发送短信。当我授予执行此操作的权限时,对话框关闭,但在我再次按下按钮之前它不会触发发送文本。

我已经在 onRequestPermissionsResult() 方法中调试并设置了断点,但它从未进入它。

首先调用此方法:

    private void askForPermission() {
    String[] permissions = new String[]{Manifest.permission.SEND_SMS};
    ActivityCompat.requestPermissions(getActivity(), permissions, PERMISSIONS_CODE);
}

然后我的回调看起来像这样:

    @Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    if (requestCode == PERMISSIONS_CODE) {
        for (int i = 0; i < permissions.length; i++) {
            String permission = permissions[i];
            int grantResult = grantResults[i];

            if (permission.equals(Manifest.permission.SEND_SMS)) {
                if (grantResult == PackageManager.PERMISSION_GRANTED) {
                    onPPSButtonPress();
                } else {
                    requestPermissions(new String[]{Manifest.permission.SEND_SMS}, PERMISSIONS_CODE);
                }
            }
        }
    }
}

有人遇到过类似的问题吗? 感谢您对此的任何帮助。 谢谢

最佳答案

我遇到了同样的问题,我刚刚找到了解决方案。使用 Support 库时,您必须使用正确的方法调用。例如:

  • AppCompatActivity中,你应该使用ActivityCompat.requestPermissions
  • android.support.v4.app.Fragment中,你应该简单地使用requestPermissions(这是android.support.v4.app.Fragment的一个实例方法)

如果你在 fragment 中调用 ActivityCompat.requestPermissions,onRequestPermissionsResult 回调会在 Activity 而不是 fragment 上调用。

关于java - Android M 权限 : onRequestPermissionsResult() not being called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32714787/

相关文章:

java - 如何在 JFrame 弹出错误后使主窗口处于非 Activity 状态

Java 显示 unicode 代码点而不是字符串文字

android - 世博会错误出错无法加载exp ://127. 0.0.1:19000

android - 使用 SAX 解析器或 XmlPullParser 解析 GPX 文件

android - 需要访问联系人的权限才能将应用程序中的联系人信息保存到 native 联系人中吗?

java - [spring] DefaultShutdownStrategy、[camel] ShutdownAware 和 [camel] 处理器的组合不起作用

java - 证书签名验证失败

android - 如何在 google play store 的单个轨道中提供 2 个版本?

permissions - Capifony setfacl 权限 : "Operation not permitted"

Django - 向用户授予自定义权限