当前位置: 首页 > 知识库问答 >
问题:

Android M权限:未调用onRequestPermissionsResult()

咸正平
2023-03-14

我正在更新我们的应用程序,以使用新的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);
                }
            }
        }
    }
}

共有1个答案

张星洲
2023-03-14

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

  • 在AppCompattivity中时,应使用ActivityCompat.RequestPermissions;
  • 在Android.support.v4.app.fragment中时,应简单使用requestPermissions(这是Android.support.v4.app.fragment的实例方法)

如果在片段中调用ActivityCompat.RequestPermissions,则对活动而不是片段调用onRequestPermissionsResult回调。

 类似资料:
  • 我正试图让我的应用程序为新的Android M权限更改做好准备,发现了一些奇怪的行为。我的应用程序使用相机意图机制,允许用户从相机中获得一张照片。但是在另一个活动中,需要使用具有camera权限的camera本身(因为库依赖项card.io需要这样做)。 这是我用来让用户用相机点击一张照片和/或选择一张图像的代码 我在活动中单击按钮时调用。当我没有相机权限在我的应用程序,它的工作很好,但与添加,我

  • 问题内容: 我正在更新我们的应用程序以使用新的M权限系统。除了onRequestPermissionsResult()以外,其他所有功能都可以使用。我需要检查按下按钮的权限,如果成功,则发送短信。当我授予执行权限时,对话框关闭,但是直到再次按下按钮时,它才触发“发送文本”。 我已经在方法中调试并设置了断点,但是它从来没有涉及到它。 首先调用此方法: 然后我的回调如下所示: 有人遇到过类似的问题吗?

  • 我想使用 null 我想创建自定义组权限,只问我一个请求,只给我一个响应。 谢谢

  • 我已经创建了自己的android。这样我就可以使用隐藏的API调用“DisplayManager.connectWifiDisplay()”。 当我运行应用程序并调用该方法时,在通过Wifi Direct连接到显示器后, 我得到以下例外: java.lang.SecurityException:连接到wifi显示器所需的权限:用户10105和当前进程都没有android.Permission.CO

  • HttpURLConnection使我的应用程序崩溃,因为即使我在清单文件中使用标记,也没有授予internet权限

  • 我已经实现了一个lambda授权器,并将其与API网关上的lambda代理集成进行了集成。 当我从API网关测试authorizer时,它工作得很好,但是当我试图从Postman调用第二个lambda上的endpoint时,请求似乎跳过了authorizer并直接命中第二个lambda。