5

我想获得在我的应用程序中阅读短信的权限。这是我的代码:

String permission = Manifest.permission.READ_SMS;
if (ContextCompat.checkSelfPermission(getContext(), permission) != PackageManager.PERMISSION_GRANTED){
    permissionList.add(permission);

    if (!ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), permission)){
        requestPermissions(new String[]{permission}), SMS_PERMISSION);
    }
}

我没有得到确认权限请求的对话框。对于其他权限(例如WRITE_STORAGE, READ_CONTACTS),我得到了这个对话框。你知道如何解决吗?

方法onRequestPermissionsResult给我没有授予权限。但它可以工作,没有确认对话框。

4

4 回答 4

2

我需要<uses-permission-sdk-23/>确认对话框。

于 2016-10-26T10:43:10.423 回答
0

您是否也添加了read_sms权限AndroidManifest.xml

于 2016-01-19T12:07:55.857 回答
0
int GET_MY_PERMISSION = 1;
if(ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_SMS)
            != PackageManager.PERMISSION_GRANTED){
        if(ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
                Manifest.permission.READ_SMS)){
            /* do nothing*/
        }
        else{

            ActivityCompat.requestPermissions(MainActivity.this,
                    new String[]{Manifest.permission.READ_SMS},GET_MY_PERMISSION);
        }
    }

这段代码工作正常。我在牛轧糖上使用了它(api level:25)我希望它甚至对你有用!我跟着这个

于 2016-11-01T07:40:55.060 回答
0

您可以使用以下代码:

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if (requestCode == ACCESS_SMS) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            Toast.makeText(getApplicationContext(), "Permission granted"+checkboxChecked, Toast.LENGTH_SHORT).show();
            System.out.println("Checkedbox= "+checkboxChecked);
        } else {
            Toast.makeText(getApplicationContext(), "Permission denied"+checkboxChecked, Toast.LENGTH_SHORT).show();
        }
    }
}
于 2020-06-25T18:31:22.423 回答