Android 读取Manifest文件下Application 等节点下的meta-data自定义数据

介绍

Android在提供了meta-date使用键值对的形式实现自定义配置。一般使用中作为渠道标识。可以用在<application>,<activity>,<activity-alias> ,<provider> ,<receiver>节点下。所有的值存储在同一个Bundle里面,可以使用 PackageItemInfo.metaData渠道这些数据。

使用形式:

<meta-data android:name="string"
           android:resource="resource specification"
           android:value="string" />

resource 和 value直接用一个即可,但是注意如果使用

<meta-data android:name="zoo" android:value="@string/kangaroo" />

那么得到的是ID值,也就是在R文件里面的数字,不是实际资源值。而要使用resource来取资源值(使用getInt()获取)。

<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节点里最后加上:

<meta-data android:value="GOOGLEPLAY_V165" android:name="HAIWAN_CHANNEL"/>

在自定义的Application里面一个方法:

/**
	 * 获取Manifest里面配置的渠道版本
	 * <p>2014-11-14</p>
	 * @return
	 * @author RANDY.ZHANG
	 */
	public String getHaiwanVersion() {
		String channel = "";
		try {
			channel = this.getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA).metaData.getString("HAIWAN_CHANNEL");
		} catch (NameNotFoundException e) {
			e.printStackTrace();
		}
		return channel;
	}

其他节点:

//在Activity应用<meta-data>元素。
    ActivityInfo info = this.getPackageManager()
            .getActivityInfo(getComponentName(),PackageManager.GET_META_DATA);
    info.metaData.getString("meta_name");

    //在application应用<meta-data>元素。
    ApplicationInfo appInfo = this.getPackageManager()
            .getApplicationInfo(getPackageName(),PackageManager.GET_META_DATA);
    appInfo.metaData.getString("meta_name");

    //在service应用<meta-data>元素。
    ComponentName cn = new ComponentName(this, MetaDataService.class);
    ServiceInfo info = this.getPackageManager().getServiceInfo(cn, PackageManager.GET_META_DATA);
    info.metaData.getString("meta_name");

    //在receiver应用<meta-data>元素。
    ComponentName cn = new ComponentName(context, MetaDataReceiver.class);
    ActivityInfo info = context.getPackageManager().getReceiverInfo(cn, PackageManager.GET_META_DATA);
    info.metaData.getString("meta_name");
时间: 2024-07-31 14:09:27

Android 读取Manifest文件下Application 等节点下的meta-data自定义数据的相关文章

Android读取Manifest文件下Application等节点下的metadata自定义数据

介绍 Android在 提供了meta-date使用键值对的形式实现自定义配置.一般使用中作为渠道标识.可以用 在<application>,<activity>,<activity-alias> ,<provider> ,<receiver>节点下.所有的值存储在同一个Bundle里面,可以使用 PackageItemInfo.metaData渠道这些数据. 使用形式: 1 <meta-data android:name="st

Android读取Assets文件夹中的内容

Android读取Assets文件夹中的内容 assets文件夹是android程序中存放相关外部文件的一个目录,Android官方提供了相应的方法去访问该文件夹中的内容,故此我们并不需要进行相关的路径判断等代码操作,直接调用相关方法打开文件并得到一个字节输入流(InputStream):然后通过相应的字符编码方式读取字节解码为字符输入流(InputStreamReader):再通过BufferReader对字符输入流读取文本并将字符存入缓冲区以便能提供字符.数组和线段的高效读取:最后我们就能逐

android读取xml文件来实现省份,城市,区的选择

本博客如需转载.请注明出处. --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 今天要实现省份,城市.区的选择,到网络上百度了一下.发

android 读取txt文件内容

Android的res文件夹是用来存储资源的,可以在res文件夹下建立一个raw文件夹,放置在raw文件夹下的内容会被原样打包,而不会被编译成二进制文件,并且可以通过R文件进行很方便地访问. 比如我们可以将更新信息.版权信息等放到txt文件中,然后放到raw文件中,然后很方便地进行访问. 在raw中放入一个a.txt文件,然后就可以在Activity中使用getResources().openRawResource(R.raw.a);方法获取一个此文件的InputStream类,而后就可以很方便

Android读取word文件

之前通过第三方jar包tm-extractors-0.4.jar,实现了一个简单的读取word文件的demo,但是只能读取word的文本数据,无法读取图片.表格数据. 最近参考网上的例子http://blog.csdn.net/xiaoxiaobian3310903/article/details/6598500 终于能够读取word里面的图片,表格等内容.在android系统上读取Word格式文档基于的开源包--POI(The Java API For Microsoft Documents)

Android 读取assets文件夹中json文件

这里要介绍一下 读取assets文件夹中json文件 转换成list 集合 只接看代码 非常简单 public static List<State> getStates(Context context) { InputStream is = null; ByteArrayOutputStream bos = null; try { is = context.getAssets().open("area.json"); bos = new ByteArrayOutputStr

Android读取assert文件夹下文件的内容

示例:取资源文件显示在ScrollView当中. 1.ReadAsset.java package com.example.ReadAsset; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; import java.io.IOException; import java.io.InputStream; public class ReadAsset extends Act

Android读取Assert文件夹下txt文本并变为String的方法

使用场景,在assert文件夹下 有些文本文件,我们需要通过工具类读取出来,然后放到String字符串中,我们该如何操作呢: 直接上代码: public static String readAssertResource(Context context, String strAssertFileName) { AssetManager assetManager = context.getAssets(); String strResponse = ""; try { InputStrea

android 读取raw文件

在Android平台下,除了对应用程序的私有文件夹中的文件进行操作外,还可以从资源文件和 Assets 中获得输入流读取数据,这些文件分别放在应用程序的res/raw 目录和 assets 目录下,这些文件在编译的时候和其他文件一起被打包.     需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作,下面就通过一个例子来说明如何从 Resources 和 Assets中的文件中读取信息.首先分别在res/raw 和 assets 目录下新建两个文本文件 "t