react-native-callkeep icon indicating copy to clipboard operation
react-native-callkeep copied to clipboard

Call requires permission which may be rejected by user

Open samuelscheit opened this issue 2 years ago • 2 comments

Bug report

  • [x] I've checked the example to reproduce the issue.

  • Reproduced on:

  • [x] Android

  • [ ] iOS

Description

Building the project with react-native-callkeep fails on android

Steps to Reproduce

Android Manifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="app.trant"
	android:exported="true" xmlns:tools="http://schemas.android.com/tools">

	<uses-permission android:name="android.permission.INTERNET" />
	<uses-permission android:name="android.permission.CAMERA" />
	<uses-permission android:name="android.permission.MICROPHONE" />
	<uses-permission android:name="android.permission.RECORD_AUDIO" />
	<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
	<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
	<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
	<uses-permission android:name="android.permission.READ_CONTACTS" />
	<uses-permission android:name="android.permission.WRITE_CONTACTS" />
	<uses-permission android:name="android.permission.READ_CALL_LOG" />
	<uses-permission android:name="android.permission.BIND_TELECOM_CONNECTION_SERVICE"
		tools:ignore="ProtectedPermissions" />
	<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
	<uses-permission android:name="android.permission.READ_PHONE_STATE" />
	<uses-permission android:name="android.permission.CALL_PHONE" />
	<uses-permission android:name="android.permission.READ_CALL_LOG" />
	<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
	<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
	<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

	<uses-feature android:name="android.hardware.camera" />
	<uses-feature android:name="android.hardware.camera.autofocus" />
	<uses-feature android:name="android.hardware.audio.output" />
	<uses-feature android:name="android.hardware.microphone" />


	<application android:usesCleartextTraffic="true" android:name=".MainApplication"
		android:label="@string/app_name" android:icon="@mipmap/ic_launcher"
		android:allowBackup="false" android:theme="@style/AppTheme">
		<activity android:exported="true" android:name=".MainActivity"
			android:label="@string/app_name"
			android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
			android:launchMode="singleTask" android:windowSoftInputMode="adjustResize">
			<intent-filter>
				<action android:name="android.intent.action.MAIN" />
				<category android:name="android.intent.category.LAUNCHER" />
				<action android:name="android.telecom.ConnectionService" />

			</intent-filter>
		</activity>
		<service android:exported="true"
			android:name="io.wazo.callkeep.RNCallKeepBackgroundMessagingService" />
		<service android:exported="true" android:name="io.wazo.callkeep.VoiceConnectionService"
			android:label="Wazo"
			android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE"
			android:foregroundServiceType="camera|microphone">

			<intent-filter>
				<action android:name="android.telecom.ConnectionService" />
			</intent-filter>
		</service>
	</application>
</manifest>

Versions

- Callkeep: 4.3.3
- React Native: 0.70.6
- Android: 12.0.0

Logs

/node_modules/react-native-callkeep/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java:367: Error: Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with checkPermission) or explicitly handle a potential SecurityException [MissingPermission]
        telecomManager.placeCall(uri, extras);

samuelscheit avatar Jan 02 '23 22:01 samuelscheit