AndroidManifest.xml 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549
  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. <uses-permission android:name="android.permission.INTERNET" />
  5. <uses-permission android:name="android.permission.WAKE_LOCK" />
  6. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  7. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  8. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  9. <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
  10. <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
  11. <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
  12. <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
  13. <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
  14. <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
  15. <uses-permission
  16. android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
  17. tools:ignore="ScopedStorage" />
  18. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  19. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  20. <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
  21. <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
  22. <application
  23. android:name=".App"
  24. android:allowBackup="true"
  25. android:icon="@mipmap/ic_launcher"
  26. android:label="${app_name}"
  27. android:networkSecurityConfig="@xml/network_security_config"
  28. android:requestLegacyExternalStorage="true"
  29. android:supportsRtl="true"
  30. android:theme="@style/AppTheme.Light"
  31. tools:ignore="AllowBackup,GoogleAppIndexingWarning,UnusedAttribute">
  32. <!-- 主入口 -->
  33. <activity
  34. android:name=".ui.welcome.WelcomeActivity"
  35. android:exported="true">
  36. <intent-filter>
  37. <action android:name="android.intent.action.MAIN" />
  38. <category android:name="android.intent.category.LAUNCHER" />
  39. </intent-filter>
  40. </activity>
  41. <!-- 图标1 -->
  42. <activity
  43. android:name=".ui.welcome.Launcher1"
  44. android:enabled="false"
  45. android:exported="true"
  46. android:icon="@mipmap/launcher1">
  47. <intent-filter>
  48. <action android:name="android.intent.action.MAIN" />
  49. <category android:name="android.intent.category.LAUNCHER" />
  50. </intent-filter>
  51. </activity>
  52. <!-- 图标2 -->
  53. <activity
  54. android:name=".ui.welcome.Launcher2"
  55. android:enabled="false"
  56. android:exported="true"
  57. android:icon="@mipmap/launcher2">
  58. <intent-filter>
  59. <action android:name="android.intent.action.MAIN" />
  60. <category android:name="android.intent.category.LAUNCHER" />
  61. </intent-filter>
  62. </activity>
  63. <!-- 图标3 -->
  64. <activity
  65. android:name=".ui.welcome.Launcher3"
  66. android:enabled="false"
  67. android:exported="true"
  68. android:icon="@mipmap/launcher3">
  69. <intent-filter>
  70. <action android:name="android.intent.action.MAIN" />
  71. <category android:name="android.intent.category.LAUNCHER" />
  72. </intent-filter>
  73. </activity>
  74. <!-- 图标4 -->
  75. <activity
  76. android:name=".ui.welcome.Launcher4"
  77. android:enabled="false"
  78. android:exported="true"
  79. android:icon="@mipmap/launcher4">
  80. <intent-filter>
  81. <action android:name="android.intent.action.MAIN" />
  82. <category android:name="android.intent.category.LAUNCHER" />
  83. </intent-filter>
  84. </activity>
  85. <!-- 图标5 -->
  86. <activity
  87. android:name=".ui.welcome.Launcher5"
  88. android:enabled="false"
  89. android:exported="true"
  90. android:icon="@mipmap/launcher5">
  91. <intent-filter>
  92. <action android:name="android.intent.action.MAIN" />
  93. <category android:name="android.intent.category.LAUNCHER" />
  94. </intent-filter>
  95. </activity>
  96. <!-- 图标6 -->
  97. <activity
  98. android:name=".ui.welcome.Launcher6"
  99. android:enabled="false"
  100. android:exported="true"
  101. android:icon="@mipmap/launcher6">
  102. <intent-filter>
  103. <action android:name="android.intent.action.MAIN" />
  104. <category android:name="android.intent.category.LAUNCHER" />
  105. </intent-filter>
  106. </activity>
  107. <!-- 主界面 -->
  108. <activity
  109. android:name=".ui.main.MainActivity"
  110. android:alwaysRetainTaskState="true"
  111. android:configChanges="locale|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout|uiMode"
  112. android:exported="true"
  113. android:launchMode="singleTask" />
  114. <!-- 阅读界面 -->
  115. <activity
  116. android:name=".ui.book.read.ReadBookActivity"
  117. android:configChanges="locale|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout"
  118. android:exported="true"
  119. android:launchMode="singleTask">
  120. <intent-filter>
  121. <action android:name="com.samsung.android.support.REMOTE_ACTION" />
  122. </intent-filter>
  123. <meta-data
  124. android:name="com.samsung.android.support.REMOTE_ACTION"
  125. android:resource="@xml/spen_remote_actions" />
  126. </activity>
  127. <!-- 阅读漫画界面 -->
  128. <activity
  129. android:name=".ui.book.manga.ReadMangaActivity"
  130. android:exported="false"
  131. android:launchMode="singleTask">
  132. <intent-filter>
  133. <action android:name="com.samsung.android.support.REMOTE_ACTION" />
  134. </intent-filter>
  135. <meta-data
  136. android:name="com.samsung.android.support.REMOTE_ACTION"
  137. android:resource="@xml/spen_remote_actions" />
  138. </activity>
  139. <!-- 书籍详情页 -->
  140. <activity
  141. android:name=".ui.book.info.BookInfoActivity"
  142. android:launchMode="singleTop" />
  143. <!-- 书籍信息编辑 -->
  144. <activity
  145. android:name=".ui.book.info.edit.BookInfoEditActivity"
  146. android:launchMode="singleTask" />
  147. <!-- 音频播放界面 -->
  148. <activity
  149. android:name="io.legado.app.ui.book.audio.AudioPlayActivity"
  150. android:launchMode="singleTask" />
  151. <!-- 授权界面 -->
  152. <activity
  153. android:name="io.legado.app.lib.permission.PermissionActivity"
  154. android:theme="@style/Activity.Permission" />
  155. <!-- 二维码扫描 -->
  156. <activity
  157. android:name=".ui.qrcode.QrCodeActivity"
  158. android:launchMode="singleTask" />
  159. <!-- 规则订阅 -->
  160. <activity
  161. android:name=".ui.rss.subscription.RuleSubActivity"
  162. android:launchMode="singleTask" />
  163. <!-- 书源编辑 -->
  164. <activity
  165. android:name=".ui.book.source.edit.BookSourceEditActivity"
  166. android:configChanges="locale|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout"
  167. android:launchMode="singleTask"
  168. android:windowSoftInputMode="adjustResize|stateHidden" />
  169. <!-- 订阅源编辑 -->
  170. <activity
  171. android:name=".ui.rss.source.edit.RssSourceEditActivity"
  172. android:configChanges="locale|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout"
  173. android:launchMode="singleTask"
  174. android:windowSoftInputMode="adjustResize|stateHidden" />
  175. <!-- 替换规则编辑 -->
  176. <activity
  177. android:name=".ui.replace.edit.ReplaceEditActivity"
  178. android:configChanges="locale|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout"
  179. android:launchMode="singleTask"
  180. android:windowSoftInputMode="adjustResize|stateHidden" />
  181. <!-- 配置界面 -->
  182. <activity
  183. android:name=".ui.config.ConfigActivity"
  184. android:launchMode="standard" />
  185. <!-- 搜索界面 -->
  186. <activity
  187. android:name=".ui.book.search.SearchActivity"
  188. android:launchMode="standard" />
  189. <!-- 关于界面 -->
  190. <activity
  191. android:name=".ui.about.AboutActivity"
  192. android:launchMode="singleTask"
  193. android:screenOrientation="behind" />
  194. <!-- 书源管理 -->
  195. <activity
  196. android:name=".ui.book.source.manage.BookSourceActivity"
  197. android:launchMode="singleTop"
  198. android:screenOrientation="behind" />
  199. <!-- 订阅源管理 -->
  200. <activity
  201. android:name=".ui.rss.source.manage.RssSourceActivity"
  202. android:launchMode="singleTop"
  203. android:screenOrientation="behind" />
  204. <!-- txt目录规则管理 -->
  205. <activity
  206. android:name=".ui.book.toc.rule.TxtTocRuleActivity"
  207. android:launchMode="singleTop"
  208. android:screenOrientation="behind" />
  209. <!-- 替换规则界面 -->
  210. <activity
  211. android:name=".ui.replace.ReplaceRuleActivity"
  212. android:launchMode="singleTop"
  213. android:screenOrientation="behind" />
  214. <!-- 书籍管理 -->
  215. <activity
  216. android:name=".ui.book.manage.BookshelfManageActivity"
  217. android:launchMode="singleTop"
  218. android:screenOrientation="behind" />
  219. <!-- 书源调试 -->
  220. <activity
  221. android:name=".ui.book.source.debug.BookSourceDebugActivity"
  222. android:launchMode="singleTop"
  223. android:screenOrientation="behind" />
  224. <!-- 目录 -->
  225. <activity
  226. android:name=".ui.book.toc.TocActivity"
  227. android:launchMode="singleTop"
  228. android:screenOrientation="behind" />
  229. <!-- 正文搜索 -->
  230. <activity
  231. android:name=".ui.book.searchContent.SearchContentActivity"
  232. android:launchMode="singleTop"
  233. android:screenOrientation="behind" />
  234. <!-- RSS条目 -->
  235. <activity
  236. android:name=".ui.rss.article.RssSortActivity"
  237. android:launchMode="singleTop" />
  238. <!-- RSS阅读 -->
  239. <activity
  240. android:name=".ui.rss.read.ReadRssActivity"
  241. android:configChanges="orientation|screenSize"
  242. android:hardwareAccelerated="true"
  243. android:launchMode="singleTop" />
  244. <!-- 导入书籍 -->
  245. <activity
  246. android:name=".ui.book.import.local.ImportBookActivity"
  247. android:launchMode="singleTop" />
  248. <!-- 添加远程 -->
  249. <activity
  250. android:name=".ui.book.import.remote.RemoteBookActivity"
  251. android:launchMode="singleTop" />
  252. <!-- 发现界面 -->
  253. <activity
  254. android:name=".ui.book.explore.ExploreShowActivity"
  255. android:launchMode="singleTop" />
  256. <!-- 订阅源调试 -->
  257. <activity
  258. android:name=".ui.rss.source.debug.RssSourceDebugActivity"
  259. android:launchMode="singleTop" />
  260. <!-- Rss收藏 -->
  261. <activity
  262. android:name=".ui.rss.favorites.RssFavoritesActivity"
  263. android:launchMode="singleTop" />
  264. <!-- 书签 -->
  265. <activity
  266. android:name=".ui.book.bookmark.AllBookmarkActivity"
  267. android:launchMode="singleTop" />
  268. <!-- 缓存界面 -->
  269. <activity
  270. android:name=".ui.book.cache.CacheActivity"
  271. android:launchMode="singleTop" />
  272. <!-- WebView界面 -->
  273. <activity
  274. android:name=".ui.browser.WebViewActivity"
  275. android:configChanges="locale|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout"
  276. android:launchMode="standard" />
  277. <!-- 书源登录 -->
  278. <activity
  279. android:name="io.legado.app.ui.login.SourceLoginActivity"
  280. android:configChanges="orientation|screenSize"
  281. android:hardwareAccelerated="true"
  282. android:theme="@style/AppTheme.Transparent" />
  283. <!-- 阅读记录 -->
  284. <activity
  285. android:name=".ui.about.ReadRecordActivity"
  286. android:configChanges="orientation|screenSize"
  287. android:hardwareAccelerated="true" />
  288. <!-- 字典管理 -->
  289. <activity
  290. android:name=".ui.dict.rule.DictRuleActivity"
  291. android:configChanges="orientation|screenSize"
  292. android:hardwareAccelerated="true" />
  293. <!-- 文件管理 -->
  294. <activity
  295. android:name=".ui.file.FileManageActivity"
  296. android:configChanges="orientation|screenSize"
  297. android:hardwareAccelerated="true" />
  298. <!-- 选择文件 -->
  299. <activity
  300. android:name=".ui.file.HandleFileActivity"
  301. android:configChanges="orientation|screenSize"
  302. android:hardwareAccelerated="true"
  303. android:theme="@style/AppTheme.Transparent" />
  304. <!-- 文字处理 -->
  305. <activity
  306. android:name=".receiver.SharedReceiverActivity"
  307. android:exported="true"
  308. android:label="@string/receiving_shared_label"
  309. android:theme="@style/AppTheme.Transparent">
  310. <intent-filter>
  311. <action android:name="android.intent.action.PROCESS_TEXT" />
  312. <category android:name="android.intent.category.DEFAULT" />
  313. <data android:mimeType="text/plain" />
  314. </intent-filter>
  315. <intent-filter>
  316. <action android:name="android.intent.action.SEND" />
  317. <category android:name="android.intent.category.DEFAULT" />
  318. <data android:mimeType="text/plain" />
  319. </intent-filter>
  320. </activity>
  321. <!-- 一键导入 -->
  322. <activity
  323. android:name=".ui.association.OnLineImportActivity"
  324. android:configChanges="locale|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout"
  325. android:exported="true"
  326. android:theme="@style/AppTheme.Transparent">
  327. <intent-filter>
  328. <action android:name="android.intent.action.VIEW" />
  329. <category android:name="android.intent.category.DEFAULT" />
  330. <category android:name="android.intent.category.BROWSABLE" />
  331. <data android:scheme="legado" />
  332. <data android:scheme="yuedu" />
  333. </intent-filter>
  334. </activity>
  335. <!-- 验证码输入 -->
  336. <activity
  337. android:name=".ui.association.VerificationCodeActivity"
  338. android:configChanges="locale|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout"
  339. android:theme="@style/AppTheme.Transparent" />
  340. <!-- 跳转确认 -->
  341. <activity
  342. android:name=".ui.association.OpenUrlConfirmActivity"
  343. android:configChanges="locale|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout"
  344. android:theme="@style/AppTheme.Transparent" />
  345. <!-- 打开文件 -->
  346. <activity
  347. android:name=".ui.association.FileAssociationActivity"
  348. android:exported="true"
  349. android:launchMode="singleTop"
  350. android:theme="@style/AppTheme.Transparent">
  351. <!-- VIEW (Open with) action -->
  352. <!-- Works when an app knows the media type of a file, e.g. Gmail or Chrome. -->
  353. <intent-filter>
  354. <action android:name="android.intent.action.VIEW" />
  355. <category android:name="android.intent.category.DEFAULT" />
  356. <category android:name="android.intent.category.BROWSABLE" />
  357. <data android:scheme="app" />
  358. <data android:scheme="content" />
  359. <data android:scheme="file" />
  360. <!-- text -->
  361. <data android:mimeType="text/plain" />
  362. <!-- json -->
  363. <data android:mimeType="application/json" />
  364. <!-- EPUB -->
  365. <data android:mimeType="application/epub+zip" />
  366. <!-- pdf -->
  367. <data android:mimeType="application/pdf" />
  368. <!-- mobi -->
  369. <data android:mimeType="application/mobi" />
  370. <data android:mimeType="application/x-mobipocket-ebook" />
  371. <!-- azw/azw3 -->
  372. <data android:mimeType="application/azw" />
  373. <data android:mimeType="application/azw3" />
  374. <data android:mimeType="application/x-mobi8-ebook" />
  375. <data android:mimeType="application/octet-stream" />
  376. </intent-filter>
  377. <!-- Works when an app doesn't know the media type, e.g. Dropbox -->
  378. <intent-filter>
  379. <action android:name="android.intent.action.VIEW" />
  380. <category android:name="android.intent.category.DEFAULT" />
  381. <category android:name="android.intent.category.BROWSABLE" />
  382. <data android:host="*" />
  383. <data android:scheme="app" />
  384. <data android:scheme="content" />
  385. <data android:scheme="file" />
  386. <!-- This media type is necessary, otherwise it won't match on the file extension -->
  387. <data android:mimeType="*/*" />
  388. <!--TXT-->
  389. <data android:pathAdvancedPattern=".*\\.[tT][xX][tT]" />
  390. <data android:pathPattern=".*\\.txt" />
  391. <data android:pathPattern=".*\\.TXT" />
  392. <!--JSON-->
  393. <data android:pathAdvancedPattern=".*\\.[jJ][sS][oO][nN]" />
  394. <data android:pathPattern=".*\\.json" />
  395. <data android:pathPattern=".*\\.JSON" />
  396. <!-- EPUB -->
  397. <data android:pathAdvancedPattern=".*\\.[eE][pP][uU][bB]" />
  398. <data android:pathPattern=".*\\.epub" />
  399. <data android:pathPattern=".*\\.EPUB" />
  400. <!-- pdf -->
  401. <data android:pathAdvancedPattern=".*\\.[pP][dD][fF]" />
  402. <data android:pathPattern=".*\\.pdf" />
  403. <data android:pathPattern=".*\\.PDF" />
  404. <!-- mobi -->
  405. <data android:pathAdvancedPattern=".*\\.[mM][oO][bB][iI]" />
  406. <data android:pathPattern=".*\\.mobi" />
  407. <data android:pathPattern=".*\\.MOBI" />
  408. <!-- azw -->
  409. <data android:pathAdvancedPattern=".*\\.[aA][zZ][wW]" />
  410. <data android:pathPattern=".*\\.azw" />
  411. <data android:pathPattern=".*\\.AZW" />
  412. <!-- azw3 -->
  413. <data android:pathAdvancedPattern=".*\\.[aA][zZ][wW]3" />
  414. <data android:pathPattern=".*\\.azw3" />
  415. <data android:pathPattern=".*\\.AZW3" />
  416. <!-- zip -->
  417. <data android:pathAdvancedPattern=".*\\.[zZ][iI][pP]" />
  418. <data android:pathPattern=".*\\.zip" />
  419. <data android:pathPattern=".*\\.ZIP" />
  420. <!-- rar -->
  421. <data android:pathAdvancedPattern=".*\\.[rR][aA][rR]" />
  422. <data android:pathPattern=".*\\.rar" />
  423. <data android:pathPattern=".*\\.RAR" />
  424. <!-- 7z -->
  425. <data android:pathAdvancedPattern=".*\\.7[zZ]" />
  426. <data android:pathPattern=".*\\.7z" />
  427. <data android:pathPattern=".*\\.7Z" />
  428. </intent-filter>
  429. </activity>
  430. <service
  431. android:name=".service.CheckSourceService"
  432. android:foregroundServiceType="dataSync" />
  433. <service
  434. android:name=".service.CacheBookService"
  435. android:foregroundServiceType="dataSync" />
  436. <service
  437. android:name=".service.ExportBookService"
  438. android:foregroundServiceType="dataSync" />
  439. <service
  440. android:name=".service.WebService"
  441. android:foregroundServiceType="dataSync" />
  442. <service
  443. android:name=".service.WebTileService"
  444. android:exported="true"
  445. android:foregroundServiceType="dataSync"
  446. android:icon="@drawable/ic_web_service_noti"
  447. android:label="legado Web Service"
  448. android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"
  449. tools:targetApi="24">
  450. <intent-filter>
  451. <action android:name="android.service.quicksettings.action.QS_TILE" />
  452. </intent-filter>
  453. </service>
  454. <service
  455. android:name=".service.TTSReadAloudService"
  456. android:foregroundServiceType="mediaPlayback" />
  457. <service
  458. android:name=".service.HttpReadAloudService"
  459. android:foregroundServiceType="mediaPlayback" />
  460. <service
  461. android:name=".service.AudioPlayService"
  462. android:foregroundServiceType="mediaPlayback" />
  463. <service
  464. android:name=".service.DownloadService"
  465. android:foregroundServiceType="dataSync" />
  466. <receiver
  467. android:name=".receiver.MediaButtonReceiver"
  468. android:exported="true">
  469. <intent-filter>
  470. <action android:name="android.intent.action.MEDIA_BUTTON" />
  471. </intent-filter>
  472. </receiver>
  473. <provider
  474. android:name=".api.ReaderProvider"
  475. android:authorities="${applicationId}.readerProvider"
  476. android:enabled="true"
  477. android:exported="true"
  478. tools:ignore="ExportedContentProvider" />
  479. <provider
  480. android:name="androidx.core.content.FileProvider"
  481. android:authorities="${applicationId}.fileProvider"
  482. android:exported="false"
  483. android:grantUriPermissions="true">
  484. <meta-data
  485. android:name="android.support.FILE_PROVIDER_PATHS"
  486. android:resource="@xml/file_paths" />
  487. </provider>
  488. <provider
  489. android:name="androidx.startup.InitializationProvider"
  490. android:authorities="${applicationId}.androidx-startup"
  491. android:exported="false"
  492. tools:node="merge">
  493. <meta-data
  494. android:name="androidx.emoji2.text.EmojiCompatInitializer"
  495. tools:node="remove" />
  496. </provider>
  497. <meta-data
  498. android:name="channel"
  499. android:value="${APP_CHANNEL_VALUE}" />
  500. </application>
  501. <queries>
  502. <intent>
  503. <action android:name="android.intent.action.VIEW" />
  504. <data android:scheme="*" />
  505. </intent>
  506. <intent>
  507. <action android:name="android.intent.action.VIEW" />
  508. <data
  509. android:mimeType="*/*"
  510. android:scheme="*" />
  511. </intent>
  512. <intent>
  513. <action android:name="android.intent.action.TTS_SERVICE" />
  514. </intent>
  515. <intent>
  516. <action android:name="android.intent.action.PROCESS_TEXT" />
  517. <data android:mimeType="text/plain" />
  518. </intent>
  519. </queries>
  520. </manifest>