AndroidManifest.xml 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:installLocation="internalOnly"
  5. android:testOnly="false"
  6. tools:ignore="GoogleAppIndexingWarning">
  7. <supports-screens
  8. android:anyDensity="true"
  9. android:largeScreens="true"
  10. android:normalScreens="true"
  11. android:resizeable="true"
  12. android:smallScreens="true"
  13. android:xlargeScreens="true"/>
  14. <uses-feature
  15. android:glEsVersion="0x00020000"
  16. android:required="true"/>
  17. <!-- DANGEROUS PERMISSIONS -->
  18. <!-- android.permission-group.CONTACTS -->
  19. <uses-permission android:name="android.permission.READ_CONTACTS"/>
  20. <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
  21. <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
  22. <!-- android.permission-group.STORAGE -->
  23. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  24. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  25. <!-- android.permission-group.LOCATION -->
  26. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  27. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  28. <!-- android.permission-group.MICROPHONE -->
  29. <uses-permission android:name="android.permission.RECORD_AUDIO"/>
  30. <!-- android.permission-group.PHONE -->
  31. <!-- Required to detect and hangup incoming regular calls -->
  32. <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
  33. <uses-permission android:name="android.permission.CALL_PHONE"/>
  34. <uses-permission android:name="android.permission.ANSWER_PHONE_CALLS"/>
  35. <!-- android.permission-group.CAMERA -->
  36. <uses-permission android:name="android.permission.CAMERA" />
  37. <!-- PROTECTION_NORMAL - granted automatically -->
  38. <uses-permission android:name="android.permission.INTERNET"/>
  39. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  40. <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
  41. <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>
  42. <uses-permission android:name="android.permission.VIBRATE"/>
  43. <uses-permission android:name="android.permission.WAKE_LOCK"/>
  44. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
  45. <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
  46. <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT"/>
  47. <!-- Access to address book -->
  48. <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
  49. <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
  50. <!-- Access to audio settings and bluetooth for voice calls -->
  51. <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
  52. <uses-permission
  53. android:name="android.permission.BLUETOOTH"
  54. android:maxSdkVersion="30" />
  55. <uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
  56. <!-- Permissions for biometric unlocking -->
  57. <uses-permission android:name="android.permission.USE_BIOMETRIC"/>
  58. <uses-permission android:name="android.permission.USE_FINGERPRINT"/>
  59. <!-- Launcher shortcuts -->
  60. <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
  61. <!-- Huawei launcher badges -->
  62. <uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>
  63. <uses-permission android:name="com.huawei.android.launcher.permission.READ_SETTINGS"/>
  64. <uses-permission android:name="com.huawei.android.launcher.permission.WRITE_SETTINGS"/>
  65. <!-- Sony launcher badges -->
  66. <uses-permission android:name="com.sonymobile.home.permission.PROVIDER_INSERT_BADGE"/>
  67. <!-- only for fastlane test -->
  68. <!-- TODO -->
  69. <!-- <uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/> -->
  70. <uses-feature
  71. android:name="android.hardware.location"
  72. android:required="false"/>
  73. <uses-feature
  74. android:name="android.hardware.location.gps"
  75. android:required="false"/>
  76. <uses-feature
  77. android:name="android.hardware.location.network"
  78. android:required="false"/>
  79. <uses-feature
  80. android:name="android.hardware.touchscreen"
  81. android:required="false"/>
  82. <uses-feature
  83. android:name="android.hardware.telephony"
  84. android:required="false"/>
  85. <uses-feature
  86. android:name="android.hardware.microphone"
  87. android:required="false"/>
  88. <uses-feature
  89. android:name="android.hardware.screen.portrait"
  90. android:required="false"/>
  91. <uses-feature
  92. android:name="android.hardware.bluetooth"
  93. android:required="false"/>
  94. <uses-feature
  95. android:name="android.hardware.camera"
  96. android:required="false"/>
  97. <uses-feature
  98. android:name="android.hardware.camera.any"
  99. android:required="false"/>
  100. <queries>
  101. <!-- various power manager and autostart packages we may need to direct our users to -->
  102. <package android:name="com.samsung.android.lool" />
  103. <package android:name="com.huawei.systemmanager" />
  104. <package android:name="com.iqoo.secure" />
  105. <package android:name="com.vivo.permissionmanager" />
  106. <package android:name="com.htc.pitroad" />
  107. <package android:name="com.miui.securitycenter" />
  108. <package android:name="com.letv.android.letvsafe" />
  109. <package android:name="com.coloros.safecenter" />
  110. <package android:name="com.oppo.safe" />
  111. <package android:name="com.asus.mobilemanager" />
  112. <package android:name="com.transsion.phonemanager" />
  113. <!-- provider for xperia home icon badge counters -->
  114. <provider android:authorities="com.sonymobile.home.resourceprovider"
  115. android:exported="false" />
  116. <intent>
  117. <action android:name="miui.intent.action.POWER_HIDE_MODE_APP_LIST"/>
  118. <category android:name="android.intent.category.DEFAULT"/>
  119. </intent>
  120. <intent>
  121. <action android:name="miui.intent.action.OP_AUTO_START"/>
  122. <category android:name="android.intent.category.DEFAULT"/>
  123. </intent>
  124. <intent>
  125. <action android:name="android.intent.action.SEND" />
  126. <data android:mimeType="text/plain" />
  127. </intent>
  128. <intent>
  129. <action android:name="android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS" />
  130. </intent>
  131. <intent>
  132. <action android:name="android.settings.IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS" />
  133. </intent>
  134. </queries>
  135. <application
  136. android:name=".ThreemaApplication"
  137. android:allowBackup="false"
  138. android:extractNativeLibs="true"
  139. android:hardwareAccelerated="true"
  140. android:icon="@mipmap/ic_launcher"
  141. android:roundIcon="@mipmap/ic_launcher"
  142. android:label="@string/app_name"
  143. android:largeHeap="true"
  144. android:resizeableActivity="true"
  145. android:supportsRtl="false"
  146. android:theme="@style/AppBaseTheme"
  147. android:usesCleartextTraffic="false"
  148. android:networkSecurityConfig="@xml/network_security_config"
  149. android:manageSpaceActivity="ch.threema.app.activities.StorageManagementActivity"
  150. android:allowAudioPlaybackCapture="false"
  151. android:appCategory="social"
  152. android:hasFragileUserData="true"
  153. tools:replace="android:supportsRtl,android:allowBackup"
  154. android:dataExtractionRules="@xml/data_extraction_rules">
  155. <!-- Note: The "replace" entry above should be kept to ensure that a library cannot accidentally
  156. override rtl or backup support. Unfortunately the linter warning cannot be silenced. -->
  157. <meta-data
  158. android:name="android.max_aspect"
  159. android:value="2.5"/>
  160. <meta-data
  161. android:name="android.provider.CONTACTS_STRUCTURE"
  162. android:resource="@xml/contacts"/>
  163. <activity
  164. android:name=".activities.MainActivity"
  165. android:label="@string/app_name"
  166. android:launchMode="singleTop"
  167. android:theme="@style/SplashTheme"
  168. android:configChanges="uiMode"
  169. android:exported="true">
  170. <intent-filter>
  171. <action android:name="android.intent.action.MAIN"/>
  172. <category android:name="android.intent.category.LAUNCHER"/>
  173. <!-- samsung multiwindow -->
  174. <category android:name="android.intent.category.MULTIWINDOW_LAUNCHER"/>
  175. </intent-filter>
  176. <meta-data
  177. android:name="android.app.shortcuts"
  178. android:resource="@xml/app_shortcuts"/>
  179. </activity>
  180. <activity
  181. android:name=".activities.HomeActivity"
  182. android:launchMode="singleTask"
  183. android:theme="@style/Theme.Threema.WithToolbar"
  184. android:configChanges="uiMode">
  185. </activity>
  186. <activity
  187. android:name=".activities.ComposeMessageActivity"
  188. android:launchMode="singleTop"
  189. android:parentActivityName=".activities.HomeActivity"
  190. android:theme="@style/Theme.Threema.WithToolbar"
  191. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  192. android:windowSoftInputMode="stateUnchanged"
  193. android:exported="true">
  194. <intent-filter android:label="@string/threema_contact"
  195. tools:ignore="AppLinkUrlError">
  196. <action android:name="android.intent.action.VIEW"/>
  197. <category android:name="android.intent.category.DEFAULT"/>
  198. <data android:mimeType="@string/contacts_mime_type"/>
  199. </intent-filter>
  200. </activity>
  201. <activity
  202. android:name=".activities.RecipientListActivity"
  203. android:label="@string/app_name"
  204. android:excludeFromRecents="true"
  205. android:taskAffinity=""
  206. android:launchMode="singleTask"
  207. android:theme="@style/Theme.Threema.WithToolbar"
  208. android:configChanges="uiMode"
  209. android:exported="true">
  210. <intent-filter android:label="@string/share_with_app">
  211. <action android:name="android.intent.action.SEND"/>
  212. <category android:name="android.intent.category.DEFAULT"/>
  213. <data android:mimeType="text/plain"/>
  214. <data android:mimeType="image/*"/>
  215. <data android:mimeType="video/*"/>
  216. <data android:mimeType="audio/*"/>
  217. <data android:mimeType="application/*"/>
  218. <data android:mimeType="*/*"/>
  219. </intent-filter>
  220. <intent-filter android:label="@string/share_with_app">
  221. <action android:name="android.intent.action.SEND_MULTIPLE"/>
  222. <category android:name="android.intent.category.DEFAULT"/>
  223. <data android:mimeType="*/*"/>
  224. </intent-filter>
  225. <intent-filter android:label="@string/app_name">
  226. <action android:name="android.intent.action.VIEW"/>
  227. <action android:name="android.intent.action.SENDTO"/>
  228. <category android:name="android.intent.category.DEFAULT"/>
  229. <category android:name="android.intent.category.BROWSABLE"/>
  230. <data android:scheme="sms"/>
  231. <data android:scheme="smsto"/>
  232. <data
  233. android:host="compose"
  234. android:scheme="${uriScheme}"/>
  235. </intent-filter>
  236. <intent-filter
  237. android:label="@string/app_name"
  238. android:autoVerify="true">
  239. <action android:name="android.intent.action.VIEW"/>
  240. <action android:name="android.intent.action.SENDTO"/>
  241. <category android:name="android.intent.category.DEFAULT"/>
  242. <category android:name="android.intent.category.BROWSABLE"/>
  243. <data
  244. android:host="${actionUrl}"
  245. android:pathPrefix="/compose"
  246. android:scheme="https"/>
  247. </intent-filter>
  248. <meta-data
  249. android:name="android.service.chooser.chooser_target_service"
  250. android:value="androidx.sharetarget.ChooserTargetServiceCompat" />
  251. </activity>
  252. <activity
  253. android:name=".activities.RecipientListBaseActivity"
  254. android:launchMode="singleTop"
  255. android:parentActivityName=".activities.HomeActivity"
  256. android:configChanges="uiMode"
  257. android:theme="@style/Theme.Threema.WithToolbar">
  258. </activity>
  259. <activity
  260. android:name=".preference.SettingsActivity"
  261. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  262. android:theme="@style/Theme.Threema.Settings">
  263. </activity>
  264. <activity
  265. android:name=".preference.SettingsNotificationsDummyActivity"
  266. android:label="@string/app_name"
  267. android:exported="true">
  268. <intent-filter>
  269. <action android:name="android.intent.action.MAIN"/>
  270. <category android:name="android.intent.category.NOTIFICATION_PREFERENCES"/>
  271. </intent-filter>
  272. </activity>
  273. <activity
  274. android:name=".preference.SettingsMediaDummyActivity"
  275. android:exported="true">
  276. <intent-filter>
  277. <action android:name="android.intent.action.MANAGE_NETWORK_USAGE"/>
  278. <category android:name="android.intent.category.DEFAULT"/>
  279. </intent-filter>
  280. </activity>
  281. <activity
  282. android:name=".activities.ContactDetailActivity"
  283. android:theme="@style/Theme.Threema.TransparentStatusbar"
  284. android:configChanges="uiMode" />
  285. <activity
  286. android:name=".activities.AboutActivity"
  287. android:theme="@style/Theme.Threema.WithToolbar"
  288. android:configChanges="uiMode" />
  289. <activity
  290. android:name=".activities.AddContactActivity"
  291. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  292. android:launchMode="singleTask"
  293. android:theme="@style/Theme.Threema.Translucent"
  294. android:exported="true">
  295. <intent-filter android:label="@string/app_name">
  296. <action android:name="android.intent.action.VIEW"/>
  297. <category android:name="android.intent.category.DEFAULT"/>
  298. <category android:name="android.intent.category.BROWSABLE"/>
  299. <data
  300. android:host="add"
  301. android:scheme="${uriScheme}"/>
  302. </intent-filter>
  303. <intent-filter
  304. android:label="@string/app_name"
  305. android:autoVerify="true">
  306. <action android:name="android.intent.action.VIEW"/>
  307. <category android:name="android.intent.category.DEFAULT"/>
  308. <category android:name="android.intent.category.BROWSABLE"/>
  309. <data
  310. android:host="${actionUrl}"
  311. android:pathPrefix="/add"
  312. android:scheme="https"/>
  313. </intent-filter>
  314. </activity>
  315. <activity
  316. android:name=".activities.LicenseActivity"
  317. android:theme="@style/Theme.Threema.WithToolbar"
  318. android:configChanges="uiMode" />
  319. <activity
  320. android:name=".activities.TermsOfServiceActivity"
  321. android:theme="@style/Theme.Threema.WithToolbar"
  322. android:configChanges="uiMode" />
  323. <activity
  324. android:name=".activities.EulaActivity"
  325. android:theme="@style/Theme.Threema.WithToolbar"
  326. android:configChanges="uiMode" />
  327. <activity
  328. android:name=".activities.ExportIDResultActivity"
  329. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  330. android:launchMode="singleTop"
  331. android:parentActivityName=".activities.HomeActivity"
  332. android:theme="@style/Theme.Threema.WithToolbar">
  333. </activity>
  334. <activity
  335. android:name=".activities.ExportIDActivity"
  336. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  337. android:launchMode="singleTop"
  338. android:theme="@style/Theme.Threema.Translucent"/>
  339. <activity
  340. android:name=".activities.EnterSerialActivity"
  341. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  342. android:excludeFromRecents="true"
  343. android:launchMode="singleTop"
  344. android:screenOrientation="sensorPortrait"
  345. android:theme="@style/Theme.Threema.Wizard"
  346. android:windowSoftInputMode="adjustPan"
  347. android:exported="true">
  348. <intent-filter
  349. android:label="@string/app_name"
  350. android:priority="1000"
  351. android:autoVerify="true">
  352. <action android:name="android.intent.action.VIEW"/>
  353. <category android:name="android.intent.category.DEFAULT"/>
  354. <category android:name="android.intent.category.BROWSABLE"/>
  355. <data
  356. android:host="${actionUrl}"
  357. android:pathPrefix="/license"
  358. android:scheme="https"/>
  359. </intent-filter>
  360. <intent-filter>
  361. <action android:name="android.intent.action.VIEW"/>
  362. <category android:name="android.intent.category.DEFAULT"/>
  363. <category android:name="android.intent.category.BROWSABLE"/>
  364. <data
  365. android:host="license"
  366. android:scheme="${uriScheme}"/>
  367. </intent-filter>
  368. </activity>
  369. <activity
  370. android:name=".activities.UnlockMasterKeyActivity"
  371. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  372. android:excludeFromRecents="true"
  373. android:launchMode="singleTop"
  374. android:noHistory="true"
  375. android:theme="@style/Theme.Threema.WithToolbar"
  376. android:windowSoftInputMode="adjustNothing"/>
  377. <activity
  378. android:name=".activities.SupportActivity"
  379. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  380. android:theme="@style/Theme.Threema.WithToolbar"/>
  381. <activity
  382. android:name=".activities.PrivacyPolicyActivity"
  383. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  384. android:theme="@style/Theme.Threema.WithToolbar">
  385. </activity>
  386. <activity
  387. android:name=".activities.ServerMessageActivity"
  388. android:theme="@style/Theme.Threema.WithToolbar"
  389. android:label="server_message"/>
  390. <activity
  391. android:name=".activities.SendMediaActivity"
  392. android:theme="@style/Theme.Threema.MediaViewer"
  393. android:windowSoftInputMode="stateHidden|adjustResize"/>
  394. <activity
  395. android:name=".activities.BackupAdminActivity"
  396. android:configChanges="uiMode"
  397. android:theme="@style/Theme.Threema.WithToolbar">
  398. </activity>
  399. <activity
  400. android:name=".activities.PinLockActivity"
  401. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  402. android:theme="@style/Theme.Threema.WithToolbar.NoAnim"
  403. android:noHistory="true"
  404. android:windowSoftInputMode="stateHidden|adjustResize"/>
  405. <activity
  406. android:name=".activities.GroupAddActivity"
  407. android:theme="@style/Theme.Threema.WithToolbar"
  408. android:configChanges="uiMode" />
  409. <activity
  410. android:name=".activities.GroupAdd2Activity"
  411. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  412. android:theme="@style/Theme.Threema.Translucent">
  413. </activity>
  414. <activity
  415. android:name=".activities.GroupDetailActivity"
  416. android:theme="@style/Theme.Threema.TransparentStatusbar"
  417. android:configChanges="uiMode"
  418. android:windowSoftInputMode="stateAlwaysHidden|adjustResize" />
  419. <activity
  420. android:name=".qrscanner.activity.BaseQrScannerActivity"
  421. android:theme="@style/Theme.Threema.Translucent"/>
  422. <activity
  423. android:name=".grouplinks.AddGroupLinkBottomSheet"
  424. android:theme="@style/Theme.Threema.Translucent" />
  425. <activity
  426. android:name=".grouplinks.GroupLinkQrCodeActivity"
  427. android:theme="@style/Theme.Threema.WithToolbar"/>
  428. <activity
  429. android:name=".grouplinks.GroupLinkOverviewActivity"
  430. android:theme="@style/Theme.Threema.WithToolbar"/>
  431. <activity
  432. android:name=".grouplinks.OutgoingGroupRequestActivity"
  433. android:parentActivityName=".activities.HomeActivity"
  434. android:theme="@style/Theme.Threema.WithToolbar"/>
  435. <activity
  436. android:name=".grouplinks.IncomingGroupRequestActivity"
  437. android:parentActivityName=".activities.HomeActivity"
  438. android:theme="@style/Theme.Threema.WithToolbar"/>
  439. <activity
  440. android:name=".activities.DistributionListAddActivity"
  441. android:theme="@style/Theme.Threema.WithToolbar"
  442. android:configChanges="uiMode" />
  443. <activity
  444. android:name=".activities.ExcludedSyncIdentitiesActivity"
  445. android:theme="@style/Theme.Threema.WithToolbar"
  446. android:configChanges="uiMode" />
  447. <activity
  448. android:name=".activities.BlackListActivity"
  449. android:theme="@style/Theme.Threema.WithToolbar"
  450. android:configChanges="uiMode" />
  451. <activity
  452. android:name=".activities.ProfilePicRecipientsActivity"
  453. android:theme="@style/Theme.Threema.WithToolbar"
  454. android:configChanges="uiMode" />
  455. <activity
  456. android:name=".activities.AddAccountActivity"
  457. android:theme="@android:style/Theme.NoDisplay"/>
  458. <activity
  459. android:name=".activities.MediaViewerActivity"
  460. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  461. android:theme="@style/Theme.Threema.MediaViewer">
  462. </activity>
  463. <activity
  464. android:name=".activities.QRCodeZoomActivity"
  465. android:noHistory="true"
  466. android:theme="@style/Theme.Threema.Translucent"/>
  467. <activity
  468. android:name=".activities.MediaGalleryActivity"
  469. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  470. android:theme="@style/Theme.Threema.WithToolbar">
  471. </activity>
  472. <!-- https://code.google.com/p/android/issues/detail?id=53313 -->
  473. <activity
  474. android:name=".activities.DummyActivity"
  475. android:allowTaskReparenting="true"
  476. android:alwaysRetainTaskState="false"
  477. android:clearTaskOnLaunch="true"
  478. android:enabled="true"
  479. android:excludeFromRecents="true"
  480. android:finishOnTaskLaunch="true"
  481. android:noHistory="true"
  482. android:stateNotNeeded="true"
  483. android:theme="@android:style/Theme.NoDisplay"/>
  484. <activity
  485. android:name=".activities.ballot.BallotOverviewActivity"
  486. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  487. android:theme="@style/Theme.Threema.WithToolbar"/>
  488. <activity
  489. android:name=".activities.ballot.BallotMatrixActivity"
  490. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  491. android:theme="@style/Theme.Threema.WithToolbar"/>
  492. <activity
  493. android:name=".activities.ballot.BallotChooserActivity"
  494. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  495. android:theme="@style/Theme.Threema.WithToolbar">
  496. </activity>
  497. <activity
  498. android:name=".activities.CropImageActivity"
  499. android:theme="@style/Theme.Threema.WithToolbar"
  500. android:configChanges="uiMode" />
  501. <activity
  502. android:name=".activities.ballot.BallotWizardActivity"
  503. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  504. android:theme="@style/Theme.Threema.WithToolbar"/>
  505. <activity
  506. android:name=".filepicker.FilePickerActivity"
  507. android:theme="@style/Theme.Threema.WithToolbar"
  508. android:configChanges="uiMode" />
  509. <activity
  510. android:name=".activities.StorageManagementActivity"
  511. android:theme="@style/Theme.Threema.WithToolbar"
  512. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"/>
  513. <activity
  514. android:name=".activities.ContactNotificationsActivity"
  515. android:launchMode="singleTop"
  516. android:theme="@style/Theme.Threema.CircularReveal"/>
  517. <activity
  518. android:name=".activities.GroupNotificationsActivity"
  519. android:launchMode="singleTop"
  520. android:theme="@style/Theme.Threema.CircularReveal"/>
  521. <activity
  522. android:name=".activities.ImagePaintActivity"
  523. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  524. android:theme="@style/Theme.Threema.MediaViewer"
  525. android:windowSoftInputMode="stateHidden|adjustResize"/>
  526. <!-- Webclient activities -->
  527. <activity
  528. android:name=".webclient.activities.SessionsActivity"
  529. android:launchMode="singleTop"
  530. android:parentActivityName=".activities.HomeActivity"
  531. android:theme="@style/Theme.Threema.WithToolbar"
  532. android:configChanges="uiMode">
  533. </activity>
  534. <activity
  535. android:name=".webclient.activities.SessionsIntroActivity"
  536. android:theme="@style/Theme.Threema.WithToolbar"
  537. android:configChanges="uiMode">
  538. </activity>
  539. <activity
  540. android:name=".webclient.activities.WebDiagnosticsActivity"
  541. android:parentActivityName=".activities.HomeActivity"
  542. android:screenOrientation="sensorPortrait"
  543. android:theme="@style/Theme.Threema.WithToolbar"
  544. android:configChanges="uiMode"
  545. tools:ignore="LockedOrientationActivity">
  546. </activity>
  547. <!-- VoIP activities -->
  548. <activity
  549. android:name=".voip.activities.CallActivity"
  550. android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|touchscreen|keyboard|keyboardHidden|uiMode"
  551. android:supportsPictureInPicture="true"
  552. android:launchMode="singleTask"
  553. android:taskAffinity=".voip.activities.CallActivity"
  554. android:excludeFromRecents="true"
  555. android:screenOrientation="sensorPortrait"
  556. android:theme="@style/Theme.Threema.TransparentStatusbar"
  557. tools:ignore="LockedOrientationActivity"
  558. android:exported="true">
  559. <intent-filter android:label="@string/threema_call">
  560. <action android:name="android.intent.action.VIEW"/>
  561. <category android:name="android.intent.category.DEFAULT"/>
  562. </intent-filter>
  563. </activity>
  564. <activity
  565. android:name=".voip.activities.GroupCallActivity"
  566. android:exported="false"
  567. android:launchMode="singleTask"
  568. android:taskAffinity=".voip.activities.GroupCallActivity"
  569. android:excludeFromRecents="true"
  570. android:theme="@style/Theme.Threema.TransparentStatusbar_Fullscreen" />
  571. <activity
  572. android:name=".voip.activities.CallActionIntentActivity"
  573. android:screenOrientation="sensorPortrait"
  574. tools:ignore="LockedOrientationActivity"
  575. android:exported="true">
  576. <intent-filter tools:ignore="AppLinkUrlError">
  577. <!-- Handle calls from phonebook -->
  578. <action android:name="android.intent.action.VIEW"/>
  579. <category android:name="android.intent.category.DEFAULT"/>
  580. <data android:mimeType="${callMimeType}"/>
  581. </intent-filter>
  582. </activity>
  583. <activity
  584. android:name=".voip.activities.WebRTCDebugActivity"
  585. android:parentActivityName=".activities.HomeActivity"
  586. android:screenOrientation="sensorPortrait"
  587. android:theme="@style/Theme.Threema.WithToolbar"
  588. tools:ignore="LockedOrientationActivity">
  589. </activity>
  590. <activity
  591. android:name=".activities.WhatsNewActivity"
  592. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  593. android:noHistory="true"
  594. android:theme="@style/Theme.Threema.WhatsNew"/>
  595. <activity
  596. android:name=".activities.WhatsNew2Activity"
  597. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  598. android:noHistory="true"
  599. android:theme="@style/Theme.Threema.WhatsNew"/>
  600. <!-- Wizard activities -->
  601. <activity
  602. android:name=".activities.wizard.WizardIntroActivity"
  603. android:screenOrientation="sensorPortrait"
  604. android:theme="@style/Theme.Threema.Wizard"/>
  605. <activity
  606. android:name=".activities.wizard.WizardStartActivity"
  607. android:screenOrientation="sensorPortrait"
  608. android:theme="@style/Theme.Threema.Wizard"/>
  609. <activity
  610. android:name=".activities.wizard.WizardBaseActivity"
  611. android:screenOrientation="sensorPortrait"
  612. android:theme="@style/Theme.Threema.Wizard"
  613. android:windowSoftInputMode="adjustResize"/>
  614. <activity
  615. android:name=".activities.wizard.WizardFingerPrintActivity"
  616. android:screenOrientation="sensorPortrait"
  617. android:theme="@style/Theme.Threema.Wizard"/>
  618. <activity
  619. android:name=".activities.wizard.WizardIDRestoreActivity"
  620. android:screenOrientation="sensorPortrait"
  621. android:theme="@style/Theme.Threema.Wizard"/>
  622. <activity
  623. android:name=".activities.wizard.WizardSafeRestoreActivity"
  624. android:screenOrientation="sensorPortrait"
  625. android:theme="@style/Theme.Threema.Wizard"
  626. android:windowSoftInputMode="stateAlwaysHidden"/>
  627. <activity
  628. android:name=".activities.wizard.WizardBackupRestoreActivity"
  629. android:screenOrientation="sensorPortrait"
  630. android:theme="@style/Theme.Threema.Wizard"
  631. android:windowSoftInputMode="stateAlwaysHidden"/>
  632. <activity
  633. android:name=".activities.SMSVerificationLinkActivity"
  634. android:theme="@android:style/Theme.NoDisplay"
  635. android:exported="true" >
  636. <intent-filter>
  637. <action android:name="android.intent.action.VIEW"/>
  638. <category android:name="android.intent.category.DEFAULT"/>
  639. <category android:name="android.intent.category.BROWSABLE"/>
  640. <data
  641. android:host="link_mobileno"
  642. android:scheme="${uriScheme}"/>
  643. </intent-filter>
  644. </activity>
  645. <activity
  646. android:name=".activities.VoiceActionActivity"
  647. android:exported="true">
  648. <intent-filter>
  649. <action android:name="com.google.android.voicesearch.SEND_MESSAGE_TO_CONTACTS"/>
  650. <category android:name="android.intent.category.DEFAULT"/>
  651. <data android:mimeType="text/plain"/>
  652. <data android:mimeType="audio/wav"/>
  653. </intent-filter>
  654. </activity>
  655. <activity
  656. android:name=".activities.DisableBatteryOptimizationsActivity"
  657. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  658. android:theme="@style/Theme.Threema.Translucent"/>
  659. <activity
  660. android:name=".activities.StickerSelectorActivity"
  661. android:theme="@style/Theme.Threema.Transparent.Background"/>
  662. <activity
  663. android:name=".activities.ImagePaintKeyboardActivity"
  664. android:theme="@style/Theme.Threema.Transparent.Background"
  665. android:windowSoftInputMode="adjustResize|stateAlwaysVisible"/>
  666. <activity
  667. android:name=".activities.DownloadApkActivity"
  668. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  669. android:theme="@style/Theme.Threema.Translucent"/>
  670. <activity
  671. android:name=".voicemessage.VoiceRecorderActivity"
  672. android:theme="@style/Theme.Threema.Translucent"
  673. android:configChanges="orientation|keyboardHidden|screenSize|uiMode"
  674. android:clearTaskOnLaunch="true"
  675. android:windowSoftInputMode="stateAlwaysHidden"/>
  676. <activity
  677. android:name=".locationpicker.LocationPickerActivity"
  678. android:theme="@style/Theme.Threema.WithToolbar"
  679. android:configChanges="orientation|keyboardHidden|screenSize|uiMode"
  680. />
  681. <activity
  682. android:name=".mediaattacher.MediaAttachActivity"
  683. android:theme="@style/Theme.MediaAttacher"
  684. android:resizeableActivity="true"
  685. android:windowSoftInputMode="adjustNothing"
  686. android:configChanges="uiMode" />
  687. <activity
  688. android:name=".mediaattacher.MediaSelectionActivity"
  689. android:theme="@style/Theme.MediaAttacher"
  690. android:resizeableActivity="true"
  691. android:windowSoftInputMode="adjustNothing"
  692. android:configChanges="uiMode" />
  693. <activity
  694. android:name=".activities.EditSendContactActivity"
  695. android:theme="@style/Theme.Threema.Translucent"
  696. android:resizeableActivity="true"
  697. android:windowSoftInputMode="adjustResize"
  698. android:configChanges="uiMode" />
  699. <activity
  700. android:name=".threemasafe.ThreemaSafeConfigureActivity"
  701. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  702. android:theme="@style/Theme.Threema.WithToolbar"
  703. android:windowSoftInputMode="stateHidden|adjustResize"/>
  704. <activity
  705. android:name=".activities.StopPassphraseServiceActivity"
  706. android:autoRemoveFromRecents="true"
  707. android:theme="@android:style/Theme.NoDisplay"/>
  708. <activity
  709. android:name="ch.threema.app.activities.DirectoryActivity"
  710. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  711. android:theme="@style/Theme.Threema.WithToolbar"
  712. android:windowSoftInputMode="adjustResize"/>
  713. <activity
  714. android:name=".activities.BiometricLockActivity"
  715. android:autoRemoveFromRecents="true"
  716. android:theme="@style/Theme.Threema.BiometricUnlock">
  717. </activity>
  718. <activity
  719. android:name=".activities.AppLinksActivity"
  720. android:autoRemoveFromRecents="true"
  721. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  722. android:theme="@style/Theme.Threema.Transparent.Background"
  723. android:exported="true">
  724. <intent-filter
  725. android:label="@string/app_name"
  726. android:autoVerify="true">
  727. <action android:name="android.intent.action.VIEW"/>
  728. <category android:name="android.intent.category.DEFAULT"/>
  729. <category android:name="android.intent.category.BROWSABLE"/>
  730. <data
  731. android:scheme="https"
  732. android:host="${contactActionUrl}"
  733. android:pathPattern="/.*"/>
  734. <data
  735. android:scheme="https"
  736. android:host="${groupLinkActionUrl}"
  737. android:pathPattern="/join#\.*"/>
  738. </intent-filter>
  739. </activity>
  740. <activity
  741. android:name=".camera.CameraActivity"
  742. android:screenOrientation="fullSensor"
  743. android:autoRemoveFromRecents="true"
  744. android:clearTaskOnLaunch="true"
  745. android:theme="@style/Theme.Threema.Camera">
  746. <!-- Declare Huawei notch support -->
  747. <meta-data
  748. android:name="android.notch_support"
  749. android:value="true" />
  750. </activity>
  751. <activity
  752. android:name="ch.threema.app.globalsearch.GlobalSearchActivity"
  753. android:theme="@style/Theme.Threema.Translucent"
  754. android:windowSoftInputMode="adjustResize"/>
  755. <activity
  756. android:name=".locationpicker.LocationAutocompleteActivity"
  757. android:theme="@style/Theme.Threema.WithToolbar"
  758. android:windowSoftInputMode="adjustResize" />
  759. <activity
  760. android:name=".archive.ArchiveActivity"
  761. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  762. android:theme="@style/Theme.Threema.WithToolbar"
  763. android:windowSoftInputMode="adjustResize" />
  764. <activity
  765. android:name=".activities.MapActivity"
  766. android:configChanges="orientation|keyboardHidden|screenSize|uiMode"
  767. android:theme="@style/Theme.Threema.WithToolbar"
  768. android:exported="true">
  769. <intent-filter>
  770. <action android:name="android.intent.action.VIEW" />
  771. <category android:name="android.intent.category.DEFAULT" />
  772. <category android:name="android.intent.category.BROWSABLE" />
  773. <data android:scheme="geo" />
  774. </intent-filter>
  775. </activity>
  776. <activity
  777. android:name=".activities.WorkExplainActivity"
  778. android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
  779. android:theme="@style/Theme.Threema.WithToolbar" />
  780. <activity
  781. android:name=".activities.VerificationLevelActivity"
  782. android:theme="@style/Theme.Threema.WithToolbar"/>
  783. <activity
  784. android:name=".activities.TextChatBubbleActivity"
  785. android:theme="@style/Theme.Threema.WithToolbar"
  786. android:launchMode="singleTop"/>
  787. <activity
  788. android:name=".camera.QRScannerActivity"
  789. android:clearTaskOnLaunch="true"
  790. android:stateNotNeeded="true"
  791. android:configChanges="orientation|keyboardHidden"
  792. android:theme="@style/Theme.Threema.Camera"
  793. android:windowSoftInputMode="stateAlwaysHidden" />
  794. <activity
  795. android:name=".activities.ThreemaPushNotificationInfoActivity"
  796. android:theme="@style/Theme.Threema.WithToolbar"
  797. android:launchMode="singleTask"
  798. android:taskAffinity=""
  799. android:excludeFromRecents="true" />
  800. <activity
  801. android:name=".activities.PermissionRequestActivity"
  802. android:theme="@style/Theme.Threema.WithToolbar"
  803. android:launchMode="singleTop"
  804. android:exported="false"
  805. android:excludeFromRecents="true">
  806. </activity>
  807. <!-- services -->
  808. <service
  809. android:name=".AutostartService"
  810. android:permission="android.permission.BIND_JOB_SERVICE"
  811. android:enabled="true"
  812. android:exported="false"/>
  813. <service
  814. android:name=".services.AccountAuthenticatorService"
  815. android:exported="true">
  816. <intent-filter>
  817. <action android:name="android.accounts.AccountAuthenticator"/>
  818. </intent-filter>
  819. <meta-data
  820. android:name="android.accounts.AccountAuthenticator"
  821. android:resource="@xml/authenticator"/>
  822. </service>
  823. <service
  824. android:name=".services.ContactsSyncAdapterService"
  825. android:exported="true">
  826. <intent-filter>
  827. <action android:name="android.content.SyncAdapter"/>
  828. </intent-filter>
  829. <meta-data
  830. android:name="android.content.SyncAdapter"
  831. android:resource="@xml/sync_contacts"/>
  832. <meta-data
  833. android:name="android.provider.CONTACTS_STRUCTURE"
  834. android:resource="@xml/contacts"/>
  835. </service>
  836. <service
  837. android:name=".services.PassphraseService"
  838. android:enabled="true"
  839. android:exported="false"
  840. android:label="PassphraseService">
  841. </service>
  842. <service
  843. android:name=".services.WidgetService"
  844. android:permission="android.permission.BIND_REMOTEVIEWS"
  845. android:exported="false"/>
  846. <service
  847. android:name=".services.RestrictBackgroundChangedService"
  848. android:permission="android.permission.BIND_JOB_SERVICE"
  849. android:enabled="true"
  850. android:exported="false"/>
  851. <service
  852. android:name=".jobs.ReConnectJobService"
  853. android:permission="android.permission.BIND_JOB_SERVICE"/>
  854. <service android:name=".services.VoiceActionService"/>
  855. <service
  856. android:name=".backuprestore.csv.BackupService"
  857. android:exported="false"/>
  858. <service
  859. android:name=".backuprestore.csv.RestoreService"
  860. android:exported="false"/>
  861. <service
  862. android:name=".voip.services.VoipCallService"
  863. android:foregroundServiceType="phoneCall|camera|microphone"
  864. android:exported="false"/>
  865. <service
  866. android:name=".voip.services.CallRejectService"
  867. android:exported="false"/>
  868. <service
  869. android:name=".webclient.services.SessionAndroidService"
  870. android:exported="false"
  871. android:label="WebClientService"/>
  872. <service
  873. android:name=".webclient.services.StopSessionsAndroidService"
  874. android:enabled="true"
  875. android:exported="false"/>
  876. <service
  877. android:name=".services.NotificationActionService"
  878. android:enabled="true"
  879. android:exported="false"/>
  880. <service
  881. android:name=".services.ThreemaPushService"
  882. android:exported="false"
  883. android:label="ThreemaPushService"/>
  884. <service
  885. android:name=".voip.groupcall.service.GroupCallService"
  886. android:exported="false"
  887. android:foregroundServiceType="phoneCall" />
  888. <!-- Set the exported attribute for the sharetarget (needed for target api 31) -->
  889. <service
  890. android:name="androidx.sharetarget.ChooserTargetServiceCompat"
  891. android:exported="true"
  892. tools:node="merge">
  893. </service>
  894. <service
  895. android:name=".services.VoiceMessagePlayerService"
  896. android:foregroundServiceType="mediaPlayback"
  897. android:exported="false">
  898. <intent-filter>
  899. <action android:name="androidx.media3.session.MediaSessionService"/>
  900. <action android:name="androidx.media3.session.MediaLibraryService"/>
  901. <action android:name="android.media.browse.MediaBrowserService" />
  902. </intent-filter>
  903. </service>
  904. <!-- broadcast receivers -->
  905. <receiver
  906. android:name=".receivers.AutoStartNotifyReceiver"
  907. android:enabled="true"
  908. android:exported="true"
  909. android:label="BootListener">
  910. <intent-filter>
  911. <action android:name="android.intent.action.BOOT_COMPLETED"/>
  912. </intent-filter>
  913. </receiver>
  914. <receiver android:name=".receivers.ConnectivityChangeReceiver">
  915. </receiver>
  916. <receiver android:name=".receivers.RestrictBackgroundChangedReceiver">
  917. </receiver>
  918. <receiver android:name=".receivers.AlarmManagerBroadcastReceiver">
  919. </receiver>
  920. <receiver android:name=".receivers.WidgetProvider"
  921. android:exported="true">
  922. <intent-filter>
  923. <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
  924. </intent-filter>
  925. <meta-data
  926. android:name="android.appwidget.provider"
  927. android:resource="@xml/appwidget_info"/>
  928. </receiver>
  929. <receiver android:name=".receivers.UpdateReceiver"
  930. android:exported="true">
  931. <intent-filter>
  932. <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
  933. </intent-filter>
  934. </receiver>
  935. <receiver
  936. android:name=".receivers.ReSendMessagesBroadcastReceiver"
  937. android:exported="false">
  938. </receiver>
  939. <receiver
  940. android:name=".receivers.CancelResendMessagesBroadcastReceiver"
  941. android:exported="false" />
  942. <receiver android:name=".receivers.FetchMessagesBroadcastReceiver"/>
  943. <receiver android:name=".voip.receivers.VoipMediaButtonReceiver"
  944. android:exported="true">
  945. <intent-filter>
  946. <action android:name="android.intent.action.MEDIA_BUTTON"/>
  947. </intent-filter>
  948. </receiver>
  949. <receiver android:name=".receivers.PowerSaveModeReceiver"
  950. android:exported="true">
  951. <intent-filter>
  952. <action android:name="android.os.action.POWER_SAVE_MODE_CHANGED"/>
  953. </intent-filter>
  954. </receiver>
  955. <receiver
  956. android:name=".receivers.SendTextToContactBroadcastReceiver"
  957. android:exported="false"/>
  958. <!-- content providers -->
  959. <provider
  960. android:name=".NamedFileProvider"
  961. android:authorities="${applicationId}.fileprovider"
  962. android:exported="false"
  963. android:grantUriPermissions="true">
  964. <meta-data
  965. android:name="android.support.FILE_PROVIDER_PATHS"
  966. android:resource="@xml/file_paths"/>
  967. </provider>
  968. <!-- disable emoji2 because we use our own emoji parsing -->
  969. <provider
  970. android:name="androidx.startup.InitializationProvider"
  971. android:authorities="${applicationId}.androidx-startup"
  972. android:exported="false"
  973. tools:node="merge">
  974. <meta-data android:name="androidx.emoji2.text.EmojiCompatInitializer"
  975. tools:node="remove" />
  976. </provider>
  977. <!-- samsung multiwindow -->
  978. <uses-library
  979. android:name="com.sec.android.app.multiwindow"
  980. android:required="false"/>
  981. <meta-data
  982. android:name="com.samsung.android.sdk.multiwindow.penwindow.enable"
  983. android:value="true"/>
  984. <meta-data
  985. android:name="com.sec.android.support.multiwindow"
  986. android:value="true"/>
  987. <meta-data
  988. android:name="com.samsung.android.keepalive.density"
  989. android:value="true"/>
  990. </application>
  991. </manifest>