AndroidManifest.xml 39 KB

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