android.permission.BIND\u电信\u连接\u服务权限被拒绝

android.permission.BIND\u电信\u连接\u服务权限被拒绝,android,voip,telephony,android-connectionservice,Android,Voip,Telephony,Android Connectionservice,我想为Voip拨号程序应用程序实现“android.telephony”库。因此,根据这一点,我试图注册电话帐户。我是这样做的 private void registerPhoneAcc(String calleeURI, String phoneNumber) { TelecomManager telecomManager = null; if (android.os.Build.VERSION.SDK_INT >= android.os.

我想为Voip拨号程序应用程序实现“android.telephony”库。因此,根据这一点,我试图注册电话帐户。我是这样做的

private void registerPhoneAcc(String calleeURI, String phoneNumber) {
       
        TelecomManager telecomManager = null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
            telecomManager = (TelecomManager) getContext().getSystemService(Context.TELECOM_SERVICE);
        }
        ComponentName componentName = new ComponentName(getContext().getPackageName(), String.valueOf(MyConnectionService.class));
        PhoneAccountHandle phoneAccountHandle = null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
            phoneAccountHandle = new PhoneAccountHandle(componentName,"App" );
            PhoneAccount phoneAccount = PhoneAccount.builder(phoneAccountHandle, "Primary").setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER).build();
            telecomManager.registerPhoneAccount(phoneAccount);
        }
       
    }
明显的

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.ex.voip">

    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.group.MICROPHONE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT"/>
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-permission android:name="android.permission.MANAGE_OWN_CALLS"/>
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="false" />

    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"
        android:xlargeScreens="true" />

    <application
        android:allowBackup="true"
        android:allowClearUserData="true"
        android:fullBackupContent="false"
        android:hardwareAccelerated="false"
        android:icon="@drawable/logo"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:usesCleartextTraffic="true"
        android:resizeableActivity="false"
        android:screenOrientation="portrait"
        android:supportsRtl="true"
        tools:replace="android:label,android:theme,android:icon"
        android:theme="@style/AppThemeNoAction"
        tools:ignore="GoogleAppIndexingWarning">

        <activity
            android:name=".app.LaunchActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:icon="@drawable/logo"
            android:label="@string/app_name"
            android:screenOrientation="sensorPortrait"
            tools:ignore="LockedOrientationActivity"
            android:theme="@style/FullscreenTheme"
            tools:replace="android:icon">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver
            android:name=".app.NetworkChangeReceiver"
            android:label="NetworkChangeReceiver" />

        <activity
            android:name=".app.MainActivity"
            android:screenOrientation="sensorPortrait"
            tools:ignore="LockedOrientationActivity"
            android:theme="@style/AppThemeNoActionBar" />
        
        <activity
            android:name=".app.AboutActivity"
            android:screenOrientation="sensorPortrait"
            tools:ignore="LockedOrientationActivity" />
        <activity
            android:name=".app.SpeedActivity"
            android:screenOrientation="sensorPortrait"
            tools:ignore="LockedOrientationActivity" />
        <activity
            android:name=".app.Function"
            android:screenOrientation="sensorPortrait"
            tools:ignore="LockedOrientationActivity"/>
        <activity
            android:name=".app.CallDetails"
            android:screenOrientation="sensorPortrait"
            tools:ignore="LockedOrientationActivity" />

        <activity
            android:name=".app.AccountDetails"
            android:label="@string/title_activity_account_details"
            android:screenOrientation="sensorPortrait"
            tools:ignore="LockedOrientationActivity"
            android:theme="@style/AppThemeNoAction.NoActionBar"/>
        <activity
            android:name=".app.DetailsRecyclerView"
            android:screenOrientation="sensorPortrait"
            tools:ignore="LockedOrientationActivity"/>

        <service android:name=".app.pushnotifications.FCMBroadcastReceiver">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>

        <service
            android:name=".app.StartService"
            android:stopWithTask="false">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            </intent-filter>
        </service>

        <service
            android:name=".app.CallService"
            android:exported="true"
            android:stopWithTask="false">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            </intent-filter>

        </service>

        <receiver android:name=".app.CallBroadcast"
            android:exported="true"/>

        <service
            android:name=".app.VoipSupportService"
            android:exported="false"
            android:stopWithTask="false">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            </intent-filter>
        </service>
        <service android:name=".app.NotificationService"
            android:exported="false"
            android:stopWithTask="false">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            </intent-filter>
        </service>
        <service android:name=".app.MyConnectionService"
            android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE">
            <intent-filter>
                <action android:name="android.telecom.ConnectionService" />
            </intent-filter>
        </service>

    </application>


</manifest>

我对BIND_TELECOM_CONNECTION_服务权限的请求被拒绝

我不知道原因


提前感谢。

您正确使用了所有权限:

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.group.MICROPHONE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.MANAGE_OWN_CALLS"/>

您请求权限了吗?@MuhammadAwais需要向用户请求权限?这是否回答了您的问题?是的,您必须请求用户允许此权限才能使用此功能。@MuhammadAwais Okay将向用户请求权限并检查感谢您花时间回答我的问题。我通过卸载应用程序并再次构建应用程序解决了这个问题。我没有申请bind电信服务许可,也没有包含在清单中。在这里只添加了权限
,我想,当使用此权限时,需要进行新的安装,这意味着在安装时会将此权限授予应用程序。你有什么想法吗?你的应用程序现在可以正常工作了?那么现在有什么问题?是的,现在工作很好。没有问题。如果没有问题,请咨询api 23级或更高级别
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.ex.voip">

    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.group.MICROPHONE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT"/>
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-permission android:name="android.permission.MANAGE_OWN_CALLS"/>
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="false" />

    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"
        android:xlargeScreens="true" />

    <application
        android:allowBackup="true"
        android:allowClearUserData="true"
        android:fullBackupContent="false"
        android:hardwareAccelerated="false"
        android:icon="@drawable/logo"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:usesCleartextTraffic="true"
        android:resizeableActivity="false"
        android:screenOrientation="portrait"
        android:supportsRtl="true"
        tools:replace="android:label,android:theme,android:icon"
        android:theme="@style/AppThemeNoAction"
        tools:ignore="GoogleAppIndexingWarning">

        <activity
            android:name=".app.LaunchActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:icon="@drawable/logo"
            android:label="@string/app_name"
            android:screenOrientation="sensorPortrait"
            tools:ignore="LockedOrientationActivity"
            android:theme="@style/FullscreenTheme"
            tools:replace="android:icon">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver
            android:name=".app.NetworkChangeReceiver"
            android:label="NetworkChangeReceiver" />

        <activity
            android:name=".app.MainActivity"
            android:screenOrientation="sensorPortrait"
            tools:ignore="LockedOrientationActivity"
            android:theme="@style/AppThemeNoActionBar" />
        
        <activity
            android:name=".app.AboutActivity"
            android:screenOrientation="sensorPortrait"
            tools:ignore="LockedOrientationActivity" />
        <activity
            android:name=".app.SpeedActivity"
            android:screenOrientation="sensorPortrait"
            tools:ignore="LockedOrientationActivity" />
        <activity
            android:name=".app.Function"
            android:screenOrientation="sensorPortrait"
            tools:ignore="LockedOrientationActivity"/>
        <activity
            android:name=".app.CallDetails"
            android:screenOrientation="sensorPortrait"
            tools:ignore="LockedOrientationActivity" />

        <activity
            android:name=".app.AccountDetails"
            android:label="@string/title_activity_account_details"
            android:screenOrientation="sensorPortrait"
            tools:ignore="LockedOrientationActivity"
            android:theme="@style/AppThemeNoAction.NoActionBar"/>
        <activity
            android:name=".app.DetailsRecyclerView"
            android:screenOrientation="sensorPortrait"
            tools:ignore="LockedOrientationActivity"/>

        <service android:name=".app.pushnotifications.FCMBroadcastReceiver">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>

        <service
            android:name=".app.StartService"
            android:stopWithTask="false">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            </intent-filter>
        </service>

        <service
            android:name=".app.CallService"
            android:exported="true"
            android:stopWithTask="false">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            </intent-filter>

        </service>

        <receiver android:name=".app.CallBroadcast"
            android:exported="true"/>

        <service
            android:name=".app.VoipSupportService"
            android:exported="false"
            android:stopWithTask="false">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            </intent-filter>
        </service>
        <service android:name=".app.NotificationService"
            android:exported="false"
            android:stopWithTask="false">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            </intent-filter>
        </service>
        <service android:name=".app.MyConnectionService"
            android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE">
            <intent-filter>
                <action android:name="android.telecom.ConnectionService" />
            </intent-filter>
        </service>

    </application>


</manifest>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.group.MICROPHONE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.MANAGE_OWN_CALLS"/>
<uses-permission android:name="android.permission.BIND_TELECOM_CONNECTION_SERVICE"/>
// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
                Manifest.permission.BIND_TELECOM_CONNECTION_SERVICE)
        != PackageManager.PERMISSION_GRANTED) {

    // Should we show an explanation?
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.BIND_TELECOM_CONNECTION_SERVICE)) {

        // Show an expanation 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(thisActivity,
                new String[]{Manifest.permission.BIND_TELECOM_CONNECTION_SERVICE},
                MY_PERMISSIONS_REQUEST_BIND_TELECOM_CONNECTION_SERVICE);

        // MY_PERMISSIONS_REQUEST_BIND_TELECOM_CONNECTION_SERVICE is an
        // app-defined int constant. The callback method gets the
        // result of the request.
    }
}