<?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="org.thoughtcrime.securesms" android:versionCode="167" android:versionName="3.4.0"> <uses-sdk tools:overrideLibrary="com.amulyakhare.textdrawable,com.astuetz.pagerslidingtabstrip,pl.tajchert.waitingdots,com.h6ah4i.android.multiselectlistpreferencecompat"/> <permission android:name="org.thoughtcrime.securesms.ACCESS_SECRETS" android:label="Access to TextSecure Secrets" android:protectionLevel="signature" /> <uses-feature android:name="android.hardware.camera" android:required="false" /> <uses-feature android:name="android.hardware.bluetooth" android:required="false" /> <uses-feature android:name="android.hardware.location" android:required="false"/> <uses-feature android:name="android.hardware.location.network" android:required="false"/> <uses-feature android:name="android.hardware.location.gps" android:required="false"/> <uses-feature android:name="android.hardware.microphone" android:required="false"/> <uses-feature android:name="android.hardware.wifi" android:required="false"/> <uses-feature android:name="android.hardware.portrait" android:required="false"/> <uses-feature android:name="android.hardware.touchscreen" android:required="false"/> <uses-permission android:name="org.thoughtcrime.securesms.ACCESS_SECRETS"/> <uses-permission android:name="android.permission.READ_PROFILE"/> <uses-permission android:name="android.permission.WRITE_PROFILE"/> <uses-permission android:name="android.permission.BROADCAST_WAP_PUSH" tools:ignore="ProtectedPermissions"/> <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.WRITE_CONTACTS"/> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RECEIVE_SMS"/> <uses-permission android:name="android.permission.RECEIVE_MMS"/> <uses-permission android:name="android.permission.READ_SMS"/> <uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="android.permission.WRITE_SMS"/> <uses-permission android:name="android.permission.VIBRATE"/> <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_PHONE_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_CALL_LOG" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <!-- For sending location tiles in the future --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <!-- So we can add a TextSecure 'Account' --> <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" /> <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS"/> <!-- For conversation 'shortcuts' on the desktop --> <uses-permission android:name="android.permission.INSTALL_SHORTCUT"/> <!-- For sending/receiving events --> <uses-permission android:name="android.permission.WRITE_CALENDAR"/> <uses-permission android:name="android.permission.READ_CALENDAR"/> <!-- For fixing MMS --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <!-- Set image as wallpaper --> <uses-permission android:name="android.permission.SET_WALLPAPER"/> <!-- Permissions from RedPhone --> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.CALL_PRIVILEGED" /> <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> <uses-permission android:name="android.permission.RAISED_THREAD_PRIORITY" /> <uses-permission android:name="android.permission.READ_CALL_STATE"/> <uses-permission android:name="android.permission.READ_LOGS"/> <uses-permission android:name="android.permission.WRITE_CALL_LOG"/> <permission android:name="org.thoughtcrime.securesms.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="org.thoughtcrime.securesms.permission.C2D_MESSAGE" /> <application android:name=".ApplicationContext" android:icon="@drawable/icon" android:label="@string/app_name" tools:replace="android:allowBackup" android:allowBackup="false" android:theme="@style/TextSecure.LightTheme"> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <meta-data android:name="org.thoughtcrime.securesms.mms.TextSecureGlideModule" android:value="GlideModule" /> <activity android:name="org.thoughtcrime.redphone.RedPhone" android:screenOrientation="portrait" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|screenSize|fontScale" android:launchMode="singleTask"> </activity> <activity android:name=".CountrySelectionActivity" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".ImportExportActivity" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".InviteActivity" android:theme="@style/TextSecure.HighlightTheme" android:windowSoftInputMode="stateHidden" android:parentActivityName=".ConversationListActivity" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="org.thoughtcrime.securesms.ConversationListActivity" /> </activity> <activity android:name=".PromptMmsActivity" android:label="Configure MMS Settings" android:windowSoftInputMode="stateUnchanged" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".DeviceProvisioningActivity" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tsdevice"/> </intent-filter> </activity> <activity android:name=".preferences.MmsPreferencesActivity" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".ShareActivity" android:excludeFromRecents="true" android:launchMode="singleTask" android:noHistory="true" android:windowSoftInputMode="stateHidden" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="audio/*" /> <data android:mimeType="image/*" /> <data android:mimeType="text/plain" /> <data android:mimeType="video/*" /> </intent-filter> </activity> <activity android:name=".ConversationListActivity" android:label="@string/app_name" android:launchMode="singleTask" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize" android:exported="true" /> <activity-alias android:name=".RoutingActivity" android:targetActivity=".ConversationListActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> <activity android:name=".ConversationActivity" android:windowSoftInputMode="stateUnchanged" android:launchMode="singleTask" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize" /> <activity android:name=".ConversationPopupActivity" android:windowSoftInputMode="stateVisible" android:launchMode="singleTask" android:taskAffinity="" android:excludeFromRecents="true" android:theme="@style/TextSecure.LightTheme.Popup" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize" /> <activity android:name=".MessageDetailsActivity" android:label="@string/AndroidManifest__message_details" android:windowSoftInputMode="stateHidden" android:launchMode="singleTask" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".GroupCreateActivity" android:windowSoftInputMode="stateVisible" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".DatabaseMigrationActivity" android:theme="@style/NoAnimation.Theme.AppCompat.Light.DarkActionBar" android:launchMode="singleTask" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".DatabaseUpgradeActivity" android:theme="@style/NoAnimation.Theme.AppCompat.Light.DarkActionBar" android:launchMode="singleTask" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".ExperienceUpgradeActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar" android:launchMode="singleTask" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".PassphraseCreateActivity" android:label="@string/AndroidManifest__create_passphrase" android:windowSoftInputMode="stateUnchanged" android:theme="@style/TextSecure.LightIntroTheme" android:launchMode="singleTask" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".PassphrasePromptActivity" android:label="@string/AndroidManifest__enter_passphrase" android:launchMode="singleTask" android:theme="@style/TextSecure.LightIntroTheme" android:windowSoftInputMode="stateAlwaysVisible" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".NewConversationActivity" android:theme="@style/TextSecure.LightNoActionBar" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".PushContactSelectionActivity" android:label="@string/AndroidManifest__select_contacts" android:windowSoftInputMode="stateHidden" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".ViewIdentityActivity" android:label="@string/AndroidManifest__public_identity_key" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".ViewLocalIdentityActivity" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".PassphraseChangeActivity" android:label="@string/AndroidManifest__change_passphrase" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".VerifyIdentityActivity" android:label="@string/AndroidManifest__verify_identity" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".ApplicationPreferencesActivity" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".RegistrationActivity" android:windowSoftInputMode="stateUnchanged" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".RegistrationProgressActivity" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".DeviceListActivity" android:label="@string/AndroidManifest_manage_linked_devices" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".LogSubmitActivity" android:label="@string/AndroidManifest__log_submit" android:windowSoftInputMode="stateHidden" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".MediaPreviewActivity" android:label="@string/AndroidManifest__media_preview" android:windowSoftInputMode="stateHidden" android:launchMode="singleTask" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".MediaOverviewActivity" android:windowSoftInputMode="stateHidden" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".DummyActivity" android:theme="@android:style/Theme.NoDisplay" android:enabled="true" android:allowTaskReparenting="true" android:noHistory="true" android:excludeFromRecents="true" android:alwaysRetainTaskState="false" android:stateNotNeeded="true" android:clearTaskOnLaunch="true" android:finishOnTaskLaunch="true" /> <activity android:name=".PlayServicesProblemActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".SmsSendtoActivity"> <intent-filter> <action android:name="android.intent.action.SENDTO" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="sms" /> <data android:scheme="smsto" /> <data android:scheme="mms" /> <data android:scheme="mmsto" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="vnd.android.cursor.item/vnd.org.thoughtcrime.securesms.contact" /> </intent-filter> </activity> <activity android:name="org.thoughtcrime.redphone.RedPhoneShare" android:theme="@style/NoAnimation.Theme.BlackScreen" android:launchMode="singleTask" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="vnd.android.cursor.item/vnd.org.thoughtcrime.securesms.call" /> </intent-filter> </activity> <activity android:name=".RecipientPreferenceActivity" android:theme="@style/TextSecure.LightNoActionBar" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name=".BlockedContactsActivity" android:theme="@style/TextSecure.LightTheme" android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/> <activity android:name="com.soundcloud.android.crop.CropImageActivity" /> <service android:enabled="true" android:name="org.thoughtcrime.redphone.RedPhoneService"/> <service android:enabled="true" android:name=".service.ApplicationMigrationService"/> <service android:enabled="true" android:name=".service.KeyCachingService"/> <service android:enabled="true" android:name=".service.RegistrationService"/> <service android:enabled="true" android:name=".service.MessageRetrievalService"/> <service android:name=".service.QuickResponseService" android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE" android:exported="true" > <intent-filter> <action android:name="android.intent.action.RESPOND_VIA_MESSAGE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="sms" /> <data android:scheme="smsto" /> <data android:scheme="mms" /> <data android:scheme="mmsto" /> </intent-filter> </service> <service android:name=".service.AccountAuthenticatorService" android:exported="true"> <intent-filter> <action android:name="android.accounts.AccountAuthenticator" /> </intent-filter> <meta-data android:name="android.accounts.AccountAuthenticator" android:resource="@xml/authenticator" /> </service> <service android:name=".service.ContactsSyncAdapterService" android:exported="true"> <intent-filter> <action android:name="android.content.SyncAdapter"/> </intent-filter> <meta-data android:name="android.content.SyncAdapter" android:resource="@xml/syncadapter" /> <meta-data android:name="android.provider.CONTACTS_STRUCTURE" android:resource="@xml/contactsformat" /> </service> <receiver android:name=".gcm.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="org.thoughtcrime.securesms" /> </intent-filter> </receiver> <receiver android:name=".service.SmsListener" android:permission="android.permission.BROADCAST_SMS" android:enabled="true" android:exported="true"> <intent-filter android:priority="1001"> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> <intent-filter> <action android:name="android.provider.Telephony.SMS_DELIVER"/> </intent-filter> </receiver> <receiver android:name=".service.SmsDeliveryListener" android:exported="true"> <intent-filter> <action android:name="org.thoughtcrime.securesms.services.MESSAGE_SENT"/> </intent-filter> </receiver> <receiver android:name=".service.MmsListener" android:enabled="true" android:exported="true" android:permission="android.permission.BROADCAST_WAP_PUSH"> <intent-filter android:priority="1001"> <action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED"/> <data android:mimeType="application/vnd.wap.mms-message" /> </intent-filter> <intent-filter> <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER"/> <data android:mimeType="application/vnd.wap.mms-message" /> </intent-filter> </receiver> <receiver android:name=".notifications.MarkReadReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="org.thoughtcrime.securesms.notifications.CLEAR"/> </intent-filter> </receiver> <receiver android:name=".notifications.WearReplyReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="org.thoughtcrime.securesms.notifications.WEAR_REPLY"/> </intent-filter> </receiver> <provider android:name=".providers.PartProvider" android:grantUriPermissions="true" android:authorities="org.thoughtcrime.provider.securesms" /> <provider android:name=".providers.MmsBodyProvider" android:grantUriPermissions="true" android:authorities="org.thoughtcrime.provider.securesms.mms" /> <receiver android:name=".service.RegistrationNotifier" android:exported="false"> <intent-filter> <action android:name="org.thoughtcrime.securesms.REGISTRATION_EVENT" /> </intent-filter> </receiver> <receiver android:name=".service.DirectoryRefreshListener"> <intent-filter> <action android:name="org.whispersystems.whisperpush.DIRECTORY_REFRESH"/> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> <receiver android:name=".notifications.MessageNotifier$ReminderReceiver"> <intent-filter> <action android:name="org.thoughtcrime.securesms.MessageNotifier.REMINDER_ACTION"/> </intent-filter> </receiver> <receiver android:name=".notifications.MessageNotifier$DeleteReceiver"> <intent-filter> <action android:name="org.thoughtcrime.securesms.MessageNotifier.DELETE_REMINDER_ACTION"/> </intent-filter> </receiver> <receiver android:name=".ExperienceUpgradeActivity$AppUpgradeReceiver"> <intent-filter> <action android:name="android.intent.action.PACKAGE_REPLACED"/> <data android:scheme="package" /> </intent-filter> </receiver> </application> </manifest>