首先Manifest是清单的意思,是送货单的意思。那我们要怎么理解呢?很简单,我们类比就可以了,既然是送货单,它是用于描述所送的货们物的嘛。因些,AndroidManifest.xml是用于描述应用程序的。它描述权限,描述这个应用的四大组件。

权限

权限前面我们已经用到了,同学们不用去记。随着你代码写多了,就就知道什么时候需要获取权限了,写的时候不知道怎么写也没关系,因为会提示你的。这个不需要去记,实在不知道什么时候添加权限,你放心,会报错的嘛!报错会打出来告诉你需要什么权限的,OK!到这里的话,权限就搞定了!

One more thing.还有一点要注意的,就是权限的添加不要放错地方哦!

android明细 android清单文件在哪里打开_xml

application

从上图我们可以看到有一个标签是application,也就是应用的意思。一个应用程序就有一个application,这里的话没有指明注册,默认就有一个application。如果大家要在application的生命周期里头做点什么东西,可以写一个application类,比如说BaseApplication并且继承Application这个类,复写application的生命周期方法,还有一点,就是要在Manifest里进行注册。如下:

先创建一个BaseApplication类:

android明细 android清单文件在哪里打开_应用程序_02


在xml文件里进行注册,怎么注册呢?很简单,在application的标签属性里添加一个name属性:

android明细 android清单文件在哪里打开_xml_03


到这里的话,当应用程序启动的时候,就会调用application的生命周期方法onCreate了。

我们继续去application别的属性。

android:allowBackup="true"

是否参与备份以及恢复.如果这个属性设置为false,就不会被备份或者恢复到曾经使用的时候一样,即使是全包备份,也不会把整个应用程序的数据保存到via数据库中.这个属性的默认值是true.
下一个属性是设置应用的图标,这个图标累死于我们的Pc上的桌面图标或者说是快捷启动图标。

android:icon="@mipmap/ic_launcher"

从上面的这个属性值来看,它的名字是ic_launcher,我们可以从Android Studio的左边可以看到,有多个这样的文件ic_launcher.png

android明细 android清单文件在哪里打开_xml_04


它们分别是不同尺寸的设备使用的。Android系统的硬件设备太多了,这不跟iOS一样,三套图片就可以了。而android的话,因为厂商不统一,没有统一的标准,所以的话屏幕的尺寸非常多。

回到我们说的这个图标上,这个图标的名字是可自己定的,对吧!你可以叫logo,也可以叫launcher_icon

直接替换原有的文件,或者修清单文件里的引用名称也可以的。

好的,我们来看下一下属性值:

android:label="@string/app_name"

这个是Label,是吧!label是什么意思呢?标记,标签的意思。学习xml就知道了!

这个Label属性在这里有什么用呢?它也就是我们看到的应用名称啦!

在那时修改?它其实在资源res文件下面的strings.xml文件里。

android明细 android清单文件在哪里打开_android_05


application还有一个常用的标签:

android:theme="@style/AppTheme"

这个标签用于控制样式,它在那里呢?在res文件夹下面的styles.xml文件里:

android明细 android清单文件在哪里打开_应用程序_06

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
</resources>

这个表示没有actionbar,即app运行起来直接会进入界面。
这里可以看到parent这个单词,它的意思就是继承自Theme.AppCompat.NoActionBar,这javaWeb开发的struts的配置是一样的,都具有继承性,跟我们的java也是一样和道理。

Activity

我们简单地看看activity标签吧

<activity
    android:name=".MainActivity"
    android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

这是比较常见的配置方式,这里的name和application里的name是一样的。都是用于配置目标的类。四大组件的静态注册,name都是指要注册的类。

这里也可以声明label的值。因为接下来我们的intent-filter,也就是意图过滤器,声明的是主入口,表示启动application时,显示的是哪个activity界面。所以这里这个label值就会成为了这个入口的名称,当然啦,一个应用程序可以有多个入口。
主入口的默认写法:

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

当配置了多个入口时,会从上至下去找。比如下面这个,会先启动第一个activity。

android明细 android清单文件在哪里打开_应用程序_07

public class MainActivity extends AppCompatActivity {
    private EditText et;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 
        Button bnt = findViewById(R.id.bnt);
        et = findViewById(R.id.et);
        bnt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String text = et.getText().toString();//通过text获得密码内容
                Log.e("wqq","输入的内容"+text);
            }
        });
    }
}

setContentView(R.layout.activity_main); 表示设置layout目录下的activity_main.xml为布局

android明细 android清单文件在哪里打开_应用程序_08