AndroidManifest常见的设置解析

Posted 集君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AndroidManifest常见的设置解析相关的知识,希望对你有一定的参考价值。

  androidManifest.xml清单文件是每个Android项目所必需的,它是整个Android项目的全局描述文件。AndroidManifest.xml清单文件说明了该应用的名称、所使用的图标以及包含的组件等。

  AndroidManifest.xml清单文件通常包含如下信息:

  ->应用程序的包名,该包名将会作为该应用的唯一标识。

  ->应用程序所包含的组件,如Activity、Service、BroadcastReceiver和Content Provider等。

  ->应用程序兼容的最低版本。

  ->应用程序使用系统所需的权限声明。

  ->其他程序访问该程序所需的权限声明。

 

1)例子1:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3         <!--应用程序唯一包名-->
 4     package="com.example.proposalundertake"
 5     <!--应用程序版本号、版本名称-->
 6     android:versionCode="1"
 7     android:versionName="@string/versionName" >
 8 
 9     <uses-sdk
10         android:minSdkVersion="8"
11         android:targetSdkVersion="17" />
12         
13         <!--声明应用所需要的权限-->
14     <uses-permission android:name="android.permission.CALL_PHONE" />
15     <uses-permission android:name="android.permission.INTERNET" />
16 
17     <application
18             <!--应用程序初始化装载的全局Application-->
19         android:name="com.example.proposalundertake.MyApplication"
20         android:allowBackup="true"
21         <!--应用程序图标、应用程序名称、应用程序主题-->
22         android:icon="@drawable/ic_launcher"
23         android:label="@string/app_name"
24         android:theme="@style/AppTheme" >
25         
26         <!-- 百度key绑定 -->
27         <meta-data 
28             android:name="com.baidu.lbsapi.API_KEY"
29             android:value="7YHo2b38vOheODLzlpUxRdmn"
30             />
31         
32         <!--service声明-->
33         <service android:name="com.example.proposalundertake.service.ClientKernelService" android:exported="false">
34             <intent-filter>
35                 <action android:name="com.example.proposalundertake.service.ClientKernelService" >
36                 </action>
37             </intent-filter>
38         </service>
39                
40         <service android:name="com.example.proposalundertake.bpgmsg.BPGMsgService" android:exported="false">
41             <intent-filter>
42                 <action android:name="com.example.proposalundertake.bpgmsg.BPGMsgService" />
43             </intent-filter>
44         </service>
45        
47         <!-- 欢迎界面0,允许其他程序调用打开该页面-->
48         <activity
49             android:name="com.example.proposalundertake.activity.InitActivity"
50             android:label="@string/app_name"
51             android:screenOrientation="portrait" 
52             android:theme = "@style/Transparent"
53             >   
54             <intent-filter>
55                 <action android:name="com.example.proposalundertake.activity.MYACTION" />
56                 <data android:scheme="info"/>                
57                 <category android:name="android.intent.category.DEFAULT" />
58             </intent-filter>
59         </activity> 
60               
63         <!-- 欢迎界面,默认主程序启动页面--> 
64         <activity
65             android:name="com.example.proposalundertake.activity.LoginActivity"
66             android:label="@string/app_name"
67             android:windowSoftInputMode="stateAlwaysHidden|adjustPan" 
68             android:screenOrientation="portrait" >
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          
76         <!-- 登录中的更新handler用到的类 -->
77         <activity
78             android:name="com.example.proposalundertake.activity.ClientOnTopMessageBox"
79             android:label="@string/bill_app_name"
80             android:screenOrientation="portrait"
81             android:theme="@style/Theme.OnTopDialog"
82             <!--该页面下软键盘的显示、隐藏形式-->
83             android:windowSoftInputMode="stateHidden|adjustPan" >
84         </activity>
85     </application>
86 </manifest>

这里浅谈一下service,其中com.example.proposalundertake.service.ClientKernelService,是自定义继承Service的服务,重写其中的onCreate(),onBind(),

,onUnbind(),onDestroy()等(其中,Service的声明周期只继承了onCreate(),onStart(),onDestroy()三个方法)。

可以通过Intent来启动service:

1 Intent = new Intent("com.example.proposalundertake.service.ClientKernelService");
2 Bundle bundle = new Bundle();
3 bundle.putInt("open",1);
4 intent.putExtras(bundle);
5 startService(intent);

另外,其中com.example.proposalundertake.activity.InitActivity,类别标记为android.intent.category.DEFAULT,也就是可以允许其他程序调用:

 

 1 // 需要使用Intent类的第2个参数指定Uri
 2 Intent intent = new Intent(
 3         "com.example.proposalundertake.activity.MYACTION",
 4         Uri.parse("info://调用主程序的Activity"));
 5 // 传递6个参数
 6 String ip = LoginActivity.this.getResources().getString(
 7         R.string.heyuan_ip);
 8 String passwordtype = LoginActivity.this.getResources()
 9         .getString(R.string.password_type);
10 String appname = LoginActivity.this.getResources()
11         .getString(R.string.app_name);
12 
13 intent.putExtra("ip", ip);
14 intent.putExtra("username", username);
15 intent.putExtra("password", password);
16 intent.putExtra("passwordtype", passwordtype); // 服务端加密类型MD5 或 明码等
17 intent.putExtra("appname", appname); // 主程序应用名称
18 intent.putExtra("appname_small", appname_small);
19 startActivity(intent);

 

 

 

2)例子2:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.example.proposalbill_hy_lead"
 4     android:versionCode="1"
 5     android:versionName="@string/versionName" >
 6 
 7     <uses-sdk
 8         android:minSdkVersion="16"
 9         android:targetSdkVersion="21" />
10     
11     <uses-permission android:name="android.permission.INTERNET"/>
12     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
13     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
14     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
15     
16     <application
17         android:allowBackup="true"
18         android:icon="@drawable/ic_launcher"
19         android:label="@string/app_name"
20         android:theme="@style/AppTheme" >
21         <activity
22             android:name="com.example.proposalbill_hy_lead.WelcomeActivity"
23             android:label="@string/app_name" >
24             <intent-filter>
25                 <action android:name="android.intent.action.MAIN" />
26 
27                 <category android:name="android.intent.category.LAUNCHER" />
28             </intent-filter>
29         </activity>
30         
31         <activity 
32             android:name="com.example.proposalbill_hy_lead.LoginActivity"
33             android:windowSoftInputMode="stateHidden|adjustPan" 
34             android:screenOrientation="portrait"
35             ></activity>
36         
37         <receiver 
38             android:name="com.example.proposalbill_hy_lead.TestReceiver2">
39             <intent-filter>
40                 <action android:name="com.example.proposalbill.lead"/>
41             </intent-filter>
42          </receiver>
43     </application>
44 </manifest>

其中AndroidManifest声明了BroadcastRecevier,com.example.proposalbill_hy_lead.TestReceiver2为继承BroadcastReceiver的类,重写onReceive方法,可以

处理接收到广播后的动作(如,弹出提示、请求网络数据、结束应用自身等等):

1 //发送广播,子程序接收广播,结束子程序的登录页面
2 Intent intent = new Intent();
3 intent.setAction("com.example.proposalbill.lead");
4 intent.putExtra("msg", ConstantUtil.appname_small);       //对应要结束的子程序
5 sendBroadcast(intent);

 

以上是关于AndroidManifest常见的设置解析的主要内容,如果未能解决你的问题,请参考以下文章

使用 XmlResourceParser 解析 AndroidManifest.xml 未按预期工作

Android Studio常见问题 -- AndroidManifest.xml 覆盖问题

PMS解析AndroidManifest.xml详解

Android学习笔记之AndroidManifest.xml文件解析

如何解析 .apk 包中的 AndroidManifest.xml 文件

如何解决ERROR.Failed to parse XML in AndroidManifest.xml in Flutter的问题?在Flutter中解析AndroidManifest.xml中的X