Android 我无法显示Manifest.permission.CALL\u PHONE in runtime权限

Android 我无法显示Manifest.permission.CALL\u PHONE in runtime权限,android,permissions,Android,Permissions,我正在我的应用程序中实现运行时权限,但我无法显示CALL\u PHONE的权限。我需要出示两张许可证,阅读联系人和打电话。我可以显示完美的阅读联系,但不允许打电话 我正在使用AVD模拟器来测试它 一些帮助将是非常感谢的 这是我的代码: callPesmission.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {

我正在我的应用程序中实现运行时权限,但我无法显示CALL\u PHONE的权限。我需要出示两张许可证,阅读联系人和打电话。我可以显示完美的阅读联系,但不允许打电话

我正在使用AVD模拟器来测试它

一些帮助将是非常感谢的

这是我的代码:

      callPesmission.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                requestCallPhonePermission();
            }
        });

        contactPesmission.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                requestContactsPermission();
            }
        });


 private void requestContactsPermission() {
        String locationPermission = Manifest.permission.READ_CONTACTS;
        int hasPermission = ContextCompat.checkSelfPermission(getActivity(), locationPermission);
        String[] permissions = new String[] { locationPermission };
        if (hasPermission != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(permissions, REQUEST_CONTACTS);
        } else {
            Toast.makeText(getActivity(), "We already have persmission", Toast.LENGTH_SHORT).show();
        }
    }

    private void requestCallPhonePermission() {
        String callPermission = Manifest.permission.CALL_PHONE;
        int hasPermission = ContextCompat.checkSelfPermission(getActivity(), callPermission);
        String[] permissions = new String[] { callPermission };
        if (hasPermission != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(permissions, REQUEST_CALL_PHONE);
        } else {
            Toast.makeText(getActivity(), "We already have persmission", Toast.LENGTH_SHORT).show();
        }
    }

@Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        switch (requestCode) {
            case REQUEST_CONTACTS:
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    Toast.makeText(getActivity(), "READ_CONTACTS GRANTED", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(getActivity(), "READ_CONTACTS DENIED", Toast.LENGTH_SHORT).show();
                }
                break;
            case REQUEST_CALL_PHONE:
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    Toast.makeText(getActivity(), "CALL_PHONE GRANTED", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(getActivity(), "CALL_PHONE DENIED", Toast.LENGTH_SHORT).show();
                }
                break;
            default:
                super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }

我忘了在清单中添加权限

<uses-permission android:name="android.permission.CALL_PHONE" />

我忘了在清单中添加权限

<uses-permission android:name="android.permission.CALL_PHONE" />

我看你的代码没有问题

确认它是否确实存在于manifest.xml中


对话框不会显示,如果它不在清单中,并且如果我们尝试使用该功能,可能会引发安全异常

确认它是否确实存在于manifest.xml中

对话框不会显示,如果它不在清单中,并且如果我们尝试在Oreo中使用该功能,可能会引发安全异常

android.Manifest.permission.CALL_PHONE
你忘了安卓。零件。

用于奥利奥

android.Manifest.permission.CALL_PHONE
你忘了安卓。零件。

添加此零件

private static final int PHONE_CALL_REQUEST=0;
还有你的按钮

if (ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED)
{
    ActivityCompat.requestPermissions(MainActivity.this, new String[]{android.Manifest.permission.CALL_PHONE},PHONE_CALL_REQUEST);
}
else
{
    Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "+01723915447"));
    startActivity(intent);
}
加上这个

private static final int PHONE_CALL_REQUEST=0;
还有你的按钮

if (ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED)
{
    ActivityCompat.requestPermissions(MainActivity.this, new String[]{android.Manifest.permission.CALL_PHONE},PHONE_CALL_REQUEST);
}
else
{
    Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "+01723915447"));
    startActivity(intent);
}
步骤1:

 <uses-permission android:name="android.permission.CALL_PHONE" />
步骤2:

<permission
    android:name="mypackage.permission.CALL_PHONE"
    android:protectionLevel="signature" />
注意:步骤2中的mypackage是您的根项目包名称,例如com.myapp,因此步骤2中的上述内容将变为

<permission
    android:name="com.myapp.permission.CALL_PHONE"
    android:protectionLevel="signature" />
最后一步: 在Java/Kotin函数Manifest.permission.CALL\u中,手机将可用

步骤1:

 <uses-permission android:name="android.permission.CALL_PHONE" />
步骤2:

<permission
    android:name="mypackage.permission.CALL_PHONE"
    android:protectionLevel="signature" />
注意:步骤2中的mypackage是您的根项目包名称,例如com.myapp,因此步骤2中的上述内容将变为

<permission
    android:name="com.myapp.permission.CALL_PHONE"
    android:protectionLevel="signature" />
最后一步:
在您的Java/Kotin函数Manifest.permission.CALL_手机将可用

看到您自己的答案:发生在我们当中最好的人身上:运行时权限可能是痛苦是,绝对同意看到您自己的答案:发生在我们当中最好的人身上:运行时权限可能是痛苦是,绝对同意android。清单已导入,READ_联系人也没有android。部分。抱歉,您缺少目录Manifest,因此编译器无法解析其余部分。可能是android.Manifest已导入,READ_联系人也没有android。部分。很抱歉,您缺少目录Manifest,因此编译器无法解析其余部分。