<?xml version="1.0" encoding="utf-8"?>
<!--
/*
 * Copyright (C) 2011 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.android.cellbroadcastreceiver.module"
        android:versionCode="300000000"
        android:versionName="R-initial">

    <!-- Needed for TTS when targetSdkVersion is 30 -->
    <queries>
        <intent>
            <action android:name="android.intent.action.TTS_SERVICE" />
        </intent>
    </queries>

    <!-- Needed for TTS when targetSdkVersion is 30 -->
    <queries>
        <intent>
            <action android:name="android.intent.action.TTS_SERVICE" />
        </intent>
    </queries>

    <uses-permission android:name="android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_EMERGENCY_BROADCAST" />
    <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
    <uses-permission android:name="android.permission.MODIFY_CELL_BROADCASTS" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
    <uses-permission android:name="android.permission.STATUS_BAR" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
    <uses-permission android:name="android.permission.MANAGE_USERS" />
    <uses-permission android:name="android.permission.DEVICE_POWER" />
    <uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND" />
    <uses-permission android:name="android.permission.READ_CELL_BROADCASTS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS"/>
    <uses-permission android:name="com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <uses-sdk android:minSdkVersion="30" />

    <application android:name="com.android.cellbroadcastreceiver.CellBroadcastReceiverApp"
            android:label="@string/app_label"
            android:icon="@mipmap/ic_launcher_cell_broadcast"
            android:backupAgent="com.android.cellbroadcastreceiver.CellBroadcastBackupAgent"
            android:defaultToDeviceProtectedStorage="true"
            android:supportsRtl="true"
            android:directBootAware="true">

        <meta-data android:name="com.google.android.backup.api_key"
                android:value="AEdPqrEAAAAI2_Lb4sDI0e0twL-kf6GIqXpZIfrR0OhnM1pNJQ" />

        <service android:name="com.android.cellbroadcastreceiver.CellBroadcastAlertAudio"
                 android:exported="false" />

        <service android:name="com.android.cellbroadcastreceiver.CellBroadcastAlertService"
                 android:foregroundServiceType="systemExempted"
                 android:exported="false">
            <property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
                      android:value="keep cell broadcast receiver process alive in case of an emergency alert received during the call"/>
        </service>

        <service android:name="com.android.cellbroadcastreceiver.CellBroadcastConfigService"
                 android:exported="false" />

        <service android:name="com.android.cellbroadcastreceiver.CellBroadcastAlertReminder"
                 android:exported="false" />

        <!-- Export provider for AT&T Device and Network Reset-->
        <provider android:name="com.android.cellbroadcastreceiver.CellBroadcastContentProvider"
                  android:authorities="cellbroadcasts-app"
                  android:exported="true"
                  android:readPermission="android.permission.READ_CELL_BROADCASTS" />

        <activity android:name="com.android.cellbroadcastreceiver.CellBroadcastListActivity"
                  android:label="@string/app_label"
                  android:theme="@style/CellBroadcastListActivityTheme"
                  android:exported="true"
                  android:configChanges="orientation|keyboardHidden" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
<!-- Uncomment this category to show the Cell Broadcasts launcher icon.
     Otherwise, set "config_cellBroadcastAppLinks" to true in a config.xml overlay
     to add links to Cell Broadcast activities via Settings and MMS menu items.
                <category android:name="android.intent.category.LAUNCHER" />
 -->
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.cellbroadcastreceiver.UPDATE_LIST_VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <!-- Alias activity for CellBroadcastListActivity. Once enabled, it will appear in the launcher -->
        <activity-alias android:name="com.android.cellbroadcastreceiver.CellBroadcastListLauncherActivity"
            android:targetActivity="com.android.cellbroadcastreceiver.CellBroadcastListActivity"
            android:enabled="false"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity-alias>

        <!-- Settings opened by ListActivity menu, Settings app link or opt-out dialog. -->
        <activity android:name="com.android.cellbroadcastreceiver.CellBroadcastSettings"
                  android:theme="@style/CellBroadcastSettingsTheme"
                  android:label="@string/sms_cb_settings"
                  android:exported="true" />

        <activity android:name="com.android.cellbroadcastreceiver.CellBroadcastAlertDialog"
                  android:theme="@style/CellBroadcastAlertTheme"
                  android:launchMode="singleInstance"
                  android:exported="false"
                  android:excludeFromRecents="true"
                  android:configChanges="orientation|keyboardHidden|screenSize|keyboard|navigation">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_CB_RECEIVED" />
            </intent-filter>
        </activity>

        <!-- Container activity for CMAS opt-in/opt-out dialog. -->
        <activity android:name="com.android.cellbroadcastreceiver.CellBroadcastOptOutActivity"
                  android:launchMode="singleInstance"
                  android:theme="@style/CellBroadcastOptOutTheme"
                  android:excludeFromRecents="true"
                  android:exported="false" />

        <receiver android:name="com.android.cellbroadcastreceiver.CellBroadcastReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="android.telephony.action.DEFAULT_SMS_SUBSCRIPTION_CHANGED" />
                <action android:name="android.telephony.action.CARRIER_CONFIG_CHANGED" />
                <action android:name="android.provider.action.SMS_EMERGENCY_CB_RECEIVED" />
                <action android:name="android.provider.Telephony.SMS_CB_RECEIVED" />
                <action android:name="android.provider.Telephony.SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED" />
                <action android:name="android.intent.action.LOCALE_CHANGED" />
                <action android:name="android.intent.action.SERVICE_STATE" />
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.telephony.action.SECRET_CODE" />
                <!-- CMAS: To toggle test mode for cell broadcast testing on userdebug build -->
                <data android:scheme="android_secret_code" android:host="2627" />
            </intent-filter>
        </receiver>

        <receiver android:name="com.android.cellbroadcastreceiver.CellBroadcastInternalReceiver"
                  android:exported="false">
            <!-- No intent filter on purpose: this should only receive explicit intents -->
        </receiver>

        <provider
                android:name="com.android.cellbroadcastreceiver.CellBroadcastSearchIndexableProvider"
                android:authorities="com.android.cellbroadcastreceiver"
                android:multiprocess="false"
                android:grantUriPermissions="true"
                android:permission="android.permission.READ_SEARCH_INDEXABLES"
                android:exported="true">
            <intent-filter>
                <action android:name="android.content.action.SEARCH_INDEXABLES_PROVIDER" />
            </intent-filter>
        </provider>

    </application>
</manifest>
