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

    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE"
                     android:maxSdkVersion="29" />
    <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
    <uses-permission android:name="android.permission.MANAGE_OWN_CALLS" />

    <!-- TeleCMI fork addition: everything the ConnectionService needs, merged
         into the app automatically so integrators declare NOTHING by hand.
         Upstream never declared the service in its library manifest, so every
         app crashed at startup (Telecom SecurityException: "Registering a
         PhoneAccount requires ... BIND_TELECOM_CONNECTION_SERVICE") until the
         block was hand-copied from documentation. An app can still override or
         remove any of this with tools:node in its own manifest. -->
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_PHONE_CALL" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
    <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <application>
        <service
            android:name="io.wazo.callkeep.VoiceConnectionService"
            android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE"
            android:foregroundServiceType="phoneCall|microphone|camera|mediaPlayback"
            android:exported="true">
            <intent-filter>
                <action android:name="android.telecom.ConnectionService" />
            </intent-filter>
        </service>
        <activity
            android:name="io.wazo.callkeep.IncomingCallActivity"
            android:theme="@style/Theme.AppCompat.NoActionBar"
            android:excludeFromRecents="true"
            android:taskAffinity=""
            android:launchMode="singleInstance"
            android:showWhenLocked="true"
            android:turnScreenOn="true"
            android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|keyboardHidden|keyboard|uiMode|density|fontScale|locale"
            android:exported="false" />
    <receiver
            android:name="io.wazo.callkeep.IncomingCallActionReceiver"
            android:exported="false">
        <intent-filter>
            <action android:name="io.wazo.callkeep.NOTIFICATION_ANSWER" />
            <action android:name="io.wazo.callkeep.NOTIFICATION_DECLINE" />
        </intent-filter>
    </receiver>
    </application>
</manifest>
