相关疑难解决方法(0)

Android M Permissions:onRequestPermissionsResult()未被调用

我正在更新我们的应用程序以使用新的M权限系统.除了onRequestPermissionsResult()之外,它都在工作.我需要在按下按钮时检查权限,如果成功,则发送短信.当我授予这样做的权限时,对话框会关闭,但在我再次按下按钮之前它不会触发发送文本.

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

首先调用此方法:

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

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

    @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);
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过类似的问题?感谢任何帮助.谢谢

java permissions android android-permissions

280
推荐指数
15
解决办法
14万
查看次数

如果片段和活动中都定义了onRequestPermissionsResult,则不会在片段中调用它

我有一个片段,我在其中使用recyclerview适配器在recyclerview中使用recyclerview和设置数据.

现在,我在适配器的列表项中点击了一个按钮,我需要在android中检查android中的新权限模型的READ_EXTERNAL_STORAGE权限.

我已在此适配器的片段中创建了一个新函数,以检查是否授予了权限,如果尚未授予权限,则请求权限.

我已经通过MyFragment.this作为适配器中的参数,并在按钮单击适配器中调用片段的方法.

我使用下面的代码在片段中调用requestPermission.

if(ContextCompat.checkSelfPermission(mContext, Manifest.permission.READ_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED)){
       requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                ConstantVariables.READ_EXTERNAL_STORAGE);
    }
Run Code Online (Sandbox Code Playgroud)

onRequestPermissionsResult使用下面的代码覆盖了片段中的方法:

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case ConstantVariables.READ_EXTERNAL_STORAGE:
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // permission was granted, proceed to the normal flow.
                startImageUploading();
            } else {}
Run Code Online (Sandbox Code Playgroud)

但它没有被调用,而是调用了这个Activity的onRequestPermissionsResult方法.

我已经在片段的父活动中定义了相同的onRequestPermissionsResult方法,并且它被调用.

我无法删除活动的onRequestPermissionsResult方法,但是当我请求片段的权限时,我想调用片段的onRequestPermissionsResult方法.我怎样才能做到这一点?我在这里做错了什么,如果有人在这里有想法,请帮助我.

android android-6.0-marshmallow

132
推荐指数
7
解决办法
5万
查看次数

如何检查片段中的权限

我想检查片段内的权限.

我的代码:

        // Here, thisActivity is the current activity
        if (ContextCompat.checkSelfPermission(getActivity(),
                Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED) {


            // Should we show an explanation?
            if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(),
                    android.Manifest.permission.ACCESS_FINE_LOCATION)) {

                // Show an explanation to the user *asynchronously* -- don't block
                // this thread waiting for the user's response! After the user
                // sees the explanation, try again to request the permission.

            } else {

                // No explanation needed, we can request the permission.

                ActivityCompat.requestPermissions(getActivity(),
                        new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
                        1);



                // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
                // app-defined int …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-permissions

69
推荐指数
6
解决办法
7万
查看次数

调用父活动的onRequestPermissionResult而不是片段

我正在尝试将新的权限模型实现到我的应用程序中.我面临一个奇怪的问题.当我和我的代码的片段请求,那么该片段的onRequestPermissionResult不叫,而不是只有父活动的onRequestPermissionResult被称为具有相同请求代码.这导致了异常行为.我正在使用v4supportFragment.我的最小api是14,最大是23.

注意:这不是嵌套片段.此外,我已经浏览了stackoverflow的这篇文章,但它没有那么有用.

从v4.Fragment请求运行时权限并将回调转到Fragment?

android android-fragments android-fragmentactivity android-permissions runtime-permissions

0
推荐指数
1
解决办法
1357
查看次数