标签:
介绍
Android在 提供了meta-date使用键值对的形式实现自定义配置。一般使用中作为渠道标识。可以用 在<application>,<activity>,<activity-alias> ,<provider> ,<receiver>节点下。所有的值存储在同一个Bundle里面,可以使用 PackageItemInfo.metaData渠道这些数据。
使用形式:
1 <meta-data android:name="string" 2 android:resource="resource specification" 3 android:value="string" />
resource 和 value直接用一个即可,但是注意如果使用
1 <meta-data android:name="zoo" android:value="@string/kangaroo" />
那么得到的是ID值,也就是在R文件里面的数字,不是实际资源值。而要使用resource来取资源值(使用getInt()获取)。
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节点里最后加上:
1 <meta-data android:value="GOOGLEPLAY_V165" android:name="HAIWAN_CHANNEL"/>
在自定义的Application里面一个方法
1 public String getHaiwanVersion() { 2 String channel = ""; 3 try { 4 channel = this.getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA).metaData.getString("HAIWAN_CHANNEL"); 5 } catch (NameNotFoundException e) { 6 e.printStackTrace(); 7 } 8 return channel; 9 }
其他节点:
1 //在Activity应用<meta-data>元素。 2 ActivityInfo info = this.getPackageManager() 3 .getActivityInfo(getComponentName(),PackageManager.GET_META_DATA); 4 info.metaData.getString("meta_name"); 5 6 //在application应用<meta-data>元素。 7 ApplicationInfo appInfo = this.getPackageManager() 8 .getApplicationInfo(getPackageName(),PackageManager.GET_META_DATA); 9 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");
Android读取Manifest文件下Application等节点下的metadata自定义数据
标签:
原文地址:http://www.cnblogs.com/eachann/p/4558553.html