pull/1/head
p6syogptm 8 months ago
parent 31392d612f
commit d4b260b4d0

@ -0,0 +1,192 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Notesmaster"
tools:targetApi="31">
<activity
android:name=".ui.NotesListActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name"
android:launchMode="singleTop"
android:theme="@style/NoteTheme"
android:uiOptions="splitActionBarWhenNarrow"
android:windowSoftInputMode="adjustPan"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ui.NoteEditActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:launchMode="singleTop"
android:theme="@style/NoteTheme"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/text_note" />
<data android:mimeType="vnd.android.cursor.item/call_note" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.INSERT_OR_EDIT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/text_note" />
<data android:mimeType="vnd.android.cursor.item/call_note" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
<provider
android:name="net.micode.notes.data.NotesProvider"
android:authorities="micode_notes"
android:multiprocess="true" />
<receiver
android:name=".widget.NoteWidgetProvider_2x"
android:label="@string/app_widget2x2"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.appwidget.action.APPWIDGET_DELETED" />
<action android:name="android.intent.action.PRIVACY_MODE_CHANGED" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_2x_info" />
</receiver>
<receiver
android:name=".widget.NoteWidgetProvider_4x"
android:label="@string/app_widget4x4"
android:exported="true">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.appwidget.action.APPWIDGET_DELETED" />
<action android:name="android.intent.action.PRIVACY_MODE_CHANGED" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_4x_info" />
</receiver>
<receiver android:name=".ui.AlarmInitReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<receiver
android:name="net.micode.notes.ui.AlarmReceiver"
android:process=":remote" >
</receiver>
<activity
android:name=".ui.AlarmAlertActivity"
android:label="@string/app_name"
android:launchMode="singleInstance"
android:theme="@android:style/Theme.Holo.Wallpaper.NoTitleBar" >
</activity>
<activity
android:name="net.micode.notes.ui.NotesPreferenceActivity"
android:label="@string/preferences_title"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Holo.Light" >
</activity>
<service
android:name="net.micode.notes.gtask.remote.GTaskSyncService"
android:exported="false" >
</service>
<meta-data
android:name="android.app.default_searchable"
android:value=".ui.NoteEditActivity" />
<!-- <activity-->
<!-- android:name=".MainActivity"-->
<!-- android:exported="true">-->
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />-->
<!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>-->
<!-- </activity>
### 总体分析
这是一个安卓Android应用的`manifest`(清单)文件,它在安卓开发中起着至关重要的作用,用于向安卓系统声明应用的各种关键信息,包括所需的权限、包含的组件(如活动、服务、广播接收器、内容提供者等)以及这些组件的相关配置和属性等内容,是安卓系统了解和管理应用的重要依据。
### 权限声明部分
- 声明了多个权限,例如:
- `WRITE_EXTERNAL_STORAGE`:允许应用写入外部存储,可用于保存文件、缓存数据等操作到手机存储设备上。
- `COM.android.launcher.permission.INSTALL_SHORTCUT`:使应用具备创建桌面快捷方式的权限,方便用户快速启动应用。
- `INTERNET`:应用若要进行网络相关操作(如联网获取数据、与服务器交互等),需要此权限。
- `READ_CONTACTS`:赋予应用读取手机联系人信息的能力,可用于诸如关联联系人进行相关功能实现等场景。
- 还有涉及账户管理(`MANAGE_ACCOUNTS`、`AUTHENTICATE_ACCOUNTS`、`GET_ACCOUNTS`、`USE_CREDENTIALS`)以及接收开机完成广播(`RECEIVE_BOOT_COMPLETED`)等权限,整体涵盖了应用在存储、交互、系统功能关联等多方面可能需要的权限内容。
### 应用配置部分
- **`application`标签内**
- 设置了允许应用备份(`allowBackup="true"`),并指定了数据提取规则(`dataExtractionRules`)和全量备份内容(`fullBackupContent`)对应的 XML 文件,定义了备份相关的行为规范。
- 配置了应用图标(`icon`)、标签名称(`label`)、圆形图标(`roundIcon`)、对 RTL从右到左布局的支持`supportsRtl="true"`)以及应用的主题(`theme`)等基本显示和布局相关属性,用于确定应用在用户界面呈现方面的一些特征。
### 组件声明部分
- **活动(`activity`)组件**
- `NotesListActivity`:是应用的一个重要活动,配置了诸如屏幕方向变化、键盘隐藏等配置变化时的处理方式(`configChanges`),启动模式(`launchMode`)为`singleTop`,设置了特定的主题(`theme`)和软键盘弹出时窗口调整模式(`windowSoftInputMode`)等,并且通过`intent-filter`设置其为应用的主启动入口(包含`android.intent.action.MAIN`和`android.intent.category.LAUNCHER`),用户点击应用图标启动应用时首先进入的就是这个活动。
- `NoteEditActivity`:具备类似的部分配置属性(如`configChanges`、`launchMode`、`theme`等),同时通过多个`intent-filter`定义了它能响应的不同意图动作,比如查看、插入或编辑特定类型(文本笔记、通话记录笔记)的笔记内容,以及处理搜索相关操作等,还关联了一个用于搜索配置的`meta-data`,表明其在笔记编辑以及搜索相关功能实现方面有着重要作用。
- 还有如`AlarmAlertActivity`、`NotesPreferenceActivity`等其他活动,各自有着不同的标签、启动模式和主题配置,用于在应用中实现闹钟提醒展示、偏好设置等不同功能场景。
- **内容提供者(`provider`)组件**
声明了名为`net.micode.notes.data.NotesProvider`的内容提供者,其授权字符串(`authorities`)为`"micode_notes"`,并设置了可多进程使用(`multiprocess="true"`),用于在应用内不同组件间共享数据,比如数据库数据等,方便其他组件对数据进行访问和操作。
- **广播接收器(`receiver`)组件**
- 像`NoteWidgetProvider_2x`和`NoteWidgetProvider_4x`这类广播接收器,用于接收如应用小部件更新、删除以及隐私模式改变等相关广播动作,并且通过`meta-data`关联了对应的小部件配置信息文件,在实现应用桌面小部件功能以及响应相关系统状态变化方面发挥作用。
- 还有`AlarmInitReceiver`用于接收开机完成广播来进行闹钟相关的初始化操作,`AlarmReceiver`用于其他与闹钟相关的功能(虽然这里未详细展示其内部具体逻辑),共同构建起闹钟提醒相关的功能逻辑体系。
- **服务(`service`)组件**
声明了`net.micode.notes.gtask.remote.GTaskSyncService`服务,不过设置其为不对外导出(`exported="false"`),意味着它主要供应用内部使用,可能用于执行如数据同步等后台任务,在保证应用数据一致性等方面提供支持。
### 其他配置部分
- 通过`meta-data`配置了应用默认的搜索相关活动(指定为`ui.NoteEditActivity`),用于确定当用户发起搜索操作时默认进入的页面等搜索相关的行为引导。
此外,文件中还有部分被注释掉的`activity`(如`MainActivity`相关代码),这部分代码当前是不生效的,可能是开发过程中暂时废弃或者后续可能会启用的功能模块对应的配置内容。
-->
</application>
</manifest>
Loading…
Cancel
Save