引用自 :http://blog.csdn.net/kakaxi1o1/article/details/37595145

一、android meta-data 使用详解

android:resource="resourcespecification"

android:value="string" />

这是该元素的基本结构。在AndroidManifest.xml中,元素可以作为子元素,被包含在、、和元素中,但不同的父元素,在应用时读取的方法也不同。

这个名字值是额外的任意的可以提供给父组件的数据。一个组件元素能够包含任意数量的meta-data子元素。它们所有的值都会被收集在Bundle对象中并且使其可以作为组件的 PackageItemInfo.metaData 字段。

一般的值可以通过value属性来指定,但是如果要指定一个资源id作为一个值,那么就要用resource属性来代替。例如:下面的代码就是指定存储在@string/kangaroo资源中的zoo名字。

另一方面,利用resource属性将指定zoo的资源id号,并不是存储在资源中的资源值。

当要给组件提供多个复杂的数据时,在这里并不推荐使用多重meta-data元素,推荐你存储这些数据在一个资源文件中并且利用resource属性来通知它的id给组件。

android:name

元数据项的名字,为了保证这个名字是唯一的,采用java风格的命名规范。例如:

com.example.project.activity.fred

android:resource

资源的一个引用,指定给这个项的值是该资源的id。该id可以通过方法Bundle.getInt()来从meta-data中找到。

android:value

指定给这一项的值。可以作为值来指定的数据类型并且组件用来找回那些值的Bundle方法列在了下面的表中。

获得a meta-data 的值:

Android:name="foo"

android:value="@string/app_name"/>

ActivityInfo activityInfo=activity.getPackageManager()

.getActivityInfo(componentName, PackageManager.GET_META_DATA);

String foo =ai.metaData.getString("foo");

Toast.makeText(this, "meta:"+foo,1).show();

二、android meta-data在不用元素中使用

在AndroidManifest.xml中,元素可以作为子元素,被包含在、、和元素中,但不同的父元素,在应用时读取的方法也不同。

1 :在Activity的应用。

xml代码段:

android:name="myMsg"

android:value="hellomy activity">

java代码段:

ActivityInfo info=this.getPackageManager()

.getActivityInfo(getComponentName(),PackageManager.GET_META_DATA);

String msg=info.metaData.getString("myMsg");

System.out.println("myMsg:"+msg);

2:在application的应用。

xml代码段:

android:value="hellomy application"

android:name="myMsg">

java代码段:

ApplicationInfo appInfo = this.getPackageManager()

.getApplicationInfo(getPackageName(),PackageManager.GET_META_DATA);

String msg=appInfo.metaData.getString("myMsg");

System.out.println("myMsg:"+msg);

3:在service的应用。

xml代码段:

android:value="hellomy service"

android:name="myMsg">

java代码段:

ComponentName cn=new ComponentName(this, MetaDataService.class);

ServiceInfo info=this.getPackageManager()

.getServiceInfo(cn, PackageManager.GET_META_DATA);

String msg=info.metaData.getString("myMsg");

System.out.println("myMsg:"+msg);

4: 在receiver的应用。

xml代码段:

android:value="hellomy receiver"

android:name="myMsg">

java代码段:

ComponentName cn=new ComponentName(context, MetaDataReceiver.class);

ActivityInfo info=context.getPackageManager()

.getReceiverInfo(cn, PackageManager.GET_META_DATA);

String msg=info.metaData.getString("myMsg");

System.out.println("myMsg:"+msg);

更多相关文章

  1. android视频不播放的问题
  2. 在Android中实现多线程同步
  3. android视频不播放的问题
  4. android 开发中常用颜色,以及一些颜色的代码
  5. 在Android中扫描wifi热点演示实例教程
  6. Android(安卓)代码设置Color的几种方式
  7. android单元测试用例和日志输出
  8. Android: How to Capture Screen in Gingerbread(2.3中实现截屏)
  9. Ubuntu 13.04 编译环境配置及android 2.3 源代码编译时出现了以

随机推荐

  1. Android(安卓)init.c简析
  2. 使用Javascript判断浏览器终端设备(PC、I
  3. 【读书笔记】【Android 开发艺术探索】第
  4. android SDK系统图片资源的路径。
  5. android 相对定位布局方向
  6. Android启动画面实现
  7. android 删除的警告对话框
  8. android usb host 读写USB设备
  9. Android下监听Home键
  10. 修改Android EditText光标颜色