Android读取Manifest文件下Application等节点下的metadata自定义数据
2015-05-29 14:46
567 查看
转自:http://www.it165.net/pro/html/201411/26936.html
介绍
Android在提供了meta-date使用键值对的形式实现自定义配置。一般使用中作为渠道标识。可以用在<application>,<activity>,<activity-alias>
,<provider> ,<receiver>节点下。所有的值存储在同一个Bundle里面,可以使用 PackageItemInfo.metaData渠道这些数据。
使用形式:
view
sourceprint?
resource 和 value直接用一个即可,但是注意如果使用
view
sourceprint?
那么得到的是ID值,也就是在R文件里面的数字,不是实际资源值。而要使用resource来取资源值(使用getInt()获取)。
view
sourceprint?
android:name:确保是唯一的就OK了。
android:value:值可以是:
1.字符串 使用getString()获取
2.整数 如“100” 使用getInt()获取
3.布尔值:“true”,"false" 使用getBoolean()获取
4.颜色值: "#rgb", "#argb", "#rrggbb", 或者 "#aarrggbb" 使用getInt()获取
5.浮点值 :“1.2” 使用getFloat()
注意:Bundle中使用的是return (String) o;来获取的代码获取一个StringValue值的,如果你配置的想配置的一个字符串的值是“000”时,但是在将metadata包装成bundle的时候,"000"被解析成整数0,所以使用getString()获取的会是null。
在Manifest节点里最后加上:
view
sourceprint?
在自定义的Application里面一个方法:
view
sourceprint?
其他节点:
view
sourceprint?
介绍
Android在提供了meta-date使用键值对的形式实现自定义配置。一般使用中作为渠道标识。可以用在<application>,<activity>,<activity-alias>
,<provider> ,<receiver>节点下。所有的值存储在同一个Bundle里面,可以使用 PackageItemInfo.metaData渠道这些数据。
使用形式:
view
sourceprint?
1.
<meta-data android:name=
"string"
2.
android:resource=
"resource specification"
3.
android:value=
"string"
/>
resource 和 value直接用一个即可,但是注意如果使用
view
sourceprint?
1.
<meta-data android:name=
"zoo"
android:value=
"@string/kangaroo"
/>
那么得到的是ID值,也就是在R文件里面的数字,不是实际资源值。而要使用resource来取资源值(使用getInt()获取)。
view
sourceprint?
1.
<meta-data android:name=
"zoo"
android:resource=
"@string/kangaroo"
/>
android:name:确保是唯一的就OK了。
android:value:值可以是:
1.字符串 使用getString()获取
2.整数 如“100” 使用getInt()获取
3.布尔值:“true”,"false" 使用getBoolean()获取
4.颜色值: "#rgb", "#argb", "#rrggbb", 或者 "#aarrggbb" 使用getInt()获取
5.浮点值 :“1.2” 使用getFloat()
注意:Bundle中使用的是return (String) o;来获取的代码获取一个StringValue值的,如果你配置的想配置的一个字符串的值是“000”时,但是在将metadata包装成bundle的时候,"000"被解析成整数0,所以使用getString()获取的会是null。
实例:
在Manifest节点里最后加上:view
sourceprint?
1.
<meta-data android:value=
"GOOGLEPLAY_V165"
android:name=
"HAIWAN_CHANNEL"
/>
在自定义的Application里面一个方法:
view
sourceprint?
01.
/**
02.
* 获取Manifest里面配置的渠道版本
03.
* <p>2014-11-14</p>
04.
* @return
05.
* @author RANDY.ZHANG
06.
*/
07.
public
String getHaiwanVersion() {
08.
String channel =
""
;
09.
try
{
10.
channel =
this
.getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA).metaData.getString(
"HAIWAN_CHANNEL"
);
11.
}
catch
(NameNotFoundException e) {
12.
e.printStackTrace();
13.
}
14.
return
channel;
15.
}
其他节点:
view
sourceprint?
01.
//在Activity应用<meta-data>元素。
02.
ActivityInfo info =
this
.getPackageManager()
03.
.getActivityInfo(getComponentName(),PackageManager.GET_META_DATA);
04.
info.metaData.getString(
"meta_name"
);
05.
06.
//在application应用<meta-data>元素。
07.
ApplicationInfo appInfo =
this
.getPackageManager()
08.
.getApplicationInfo(getPackageName(),PackageManager.GET_META_DATA);
09.
appInfo.metaData.getString(
"meta_name"
);
10.
11.
//在service应用<meta-data>元素。
12.
ComponentName cn =
new
ComponentName(
this
, MetaDataService.
class
);
13.
ServiceInfo info =
this
.getPackageManager().getServiceInfo(cn, PackageManager.GET_META_DATA);
14.
info.metaData.getString(
"meta_name"
);
15.
16.
//在receiver应用<meta-data>元素。
17.
ComponentName cn =
new
ComponentName(context, MetaDataReceiver.
class
);
18.
ActivityInfo info =context.getPackageManager().getReceiverInfo(cn, PackageManager.GET_META_DATA);
19.
info.metaData.getString(
"meta_name"
);
相关文章推荐
- AndroidStudio快捷键
- Android scrollview嵌套listview时自动滑动问题
- Android运行时异常“Binary XML file line # : Error inflating class”
- 使用国内镜像在线更新AndroidSDK和Library
- GitHub 优秀的 Android 开源项目
- Android学习笔记--获得Android studio的SHA1的方法
- android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配注意事项
- Windows环境下Android NDK环境搭建
- 在Android中访问内置SE和基于SE的卡模拟(一)
- Android ActionBar使用方法
- android 悬浮窗
- Android drawBitmap的用法
- Android中可自由移动悬浮窗口的实现
- android 调用系统裁剪图片,提示无法保存经过裁剪的图片
- 手机编程系列之在手机上配置C/C++/Java/Android/Js/编程环境
- Android在fragment中调用getacvitity()返回null的解决方法
- Android Annotations框架第2篇-实例代码1
- Android的4大组件
- android4.0+ 以上如何用通用方法打开日历
- 一---Android-SDK系列文章(3) ---java(自己动手编译、运行Java程序)