02. 运行配置文件-AndroidMainfest.xml

152 阅读2分钟

AndroidManifest.xml指定了App的注册和运行时配置信息,它是一个XML描述文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bytedance.tiktok">

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:name=".application.App"
        android:allowBackup="true"
        android:icon="@mipmap/launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/launcher"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity
            android:name=".activity.SplashActivity"
            android:screenOrientation="unspecified"
            android:exported="true"
            android:theme="@style/Launch_Theme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name=".activity.MainActivity"
            android:screenOrientation="unspecified"
            android:exported="false"/>

        <activity android:name=".activity.FocusActivity"
            android:exported="false"
            android:screenOrientation="unspecified" />

        <activity android:name=".activity.PlayListActivity"
            android:exported="false"
            android:screenOrientation="unspecified" />

        <activity android:name=".activity.ShowImageActivity"
            android:exported="false"
            android:screenOrientation="unspecified"/>

    </application>

</manifest>

1.Uses-permission节点

<uses-permission> 节点用于声明应用程序所需要的系统权限。这些权限告诉系统,应用程序需要访问受保护的 API 或资源,例如文件存储、网络连接、相机等。当应用程序被安装时,系统会读取 AndroidManifest.xml 文件,并根据其中声明的权限来决定是否允许应用执行特定的操作。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>

这表明其具有读写外存的权限,以及访问网络的权限。

2.Application节点

可见AndroidManifest.xml的根节点为manifest,它的package属性指定了该App的包名。manifest下面有个application节点,它的各属性说明如下下:

android:allowBackup,是否允许应用备份。允许用户备份系统应用和第三方应用的apk安装包和应用数据,以便在刷机或者数据丢失后恢复应用,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复。为true表示允许,为false则表示不允许。

android:icon,指定App在手机屏幕上显示的图标。

android:label,指定App在手机屏幕上显示的名称。

android:roundIcon,指定App的圆角图标。

android:supportsRtl,是否支持阿拉伯语/波斯语这种从右往左的文字排列顺序。为true表示支持,为false表示不支持。

android:theme,指定App的显示风格

3.Activity节点

注意到application下面还有个activity节点,它是活动页面的注册声明,只有在AndroidManifest.xml中正确配置了activity节点,才能在运行时访问对应的活动页面。

初始配置的MainActivity正是App的默认主页,之所以说该页面是App主页,是因为它的activity节点内部还配置了以下的过滤信息:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

提问:什么是intent-filter?