Android-自定义meta-data扩展数据

在接入第三方渠道SDK的时候,经常会看到其配置文件AndroidManifest.xml有类似如下的定义:

[html] view plaincopy

  1. <!-- appid -->

  2. <meta-data

  3. android:name="APP_ID"

  4. android:value="037810BCE1D2260F32017643AC7D980C" />
  5. <!-- 发布渠道(可选) -->

  6. <meta-data

  7. android:name="APP_CHANNEL"

  8. android:value="QQ_CENTER" />

标签<meta-data>是提供组件额外的数据用的,它本身就是一个键值对,可以自定义名称和值。它可以包含在以下组件当中:

<activity> 
<activity-alias> 
<application> 
<provider> 
<receiver>

给各位看一个示例吧:

这是我定义的一个AndroidMenifest.xml配置文件

[html] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>

  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"

  3. package="com.wwj.metadata"

  4. android:versionCode="1"

  5. android:versionName="1.0" >
  6. <uses-sdk

  7. android:minSdkVersion="8"

  8. android:targetSdkVersion="18" />
  9. <application

  10. android:allowBackup="true"

  11. android:icon="@drawable/ic_launcher"

  12. android:label="@string/app_name"

  13. android:theme="@style/AppTheme" >

  14. <activity

  15. android:name="com.wwj.metadata.MainActivity"

  16. android:label="@string/app_name" >

  17. <intent-filter>

  18. <action android:name="android.intent.action.MAIN" />
  19. <category android:name="android.intent.category.LAUNCHER" />

  20. </intent-filter>

  21. <!-- 在Activity定义的meta-data -->

  22. <meta-data

  23. android:name="myMsg"

  24. android:value="hello my activity" >

  25. </meta-data>

  26. </activity>
  27. <!-- 在Application定义的meta-data -->

  28. <meta-data

  29. android:name="myMsg"

  30. android:value="hello my application" >

  31. </meta-data>

  32. </application>
  33. </manifest>

笔者这里在Application级别和Activity级别都定义了一个meta-data,我们如何来取得这两个组件的值呢?如下:

[java] view plaincopy

  1. package com.wwj.metadata;
  2. import android.app.Activity;

  3. import android.content.pm.ActivityInfo;

  4. import android.content.pm.PackageManager;

  5. import android.content.pm.PackageManager.NameNotFoundException;

  6. import android.os.Bundle;
  7. public class MainActivity extends Activity {
  8. @Override

  9. protected void onCreate(Bundle savedInstanceState) {

  10. super.onCreate(savedInstanceState);

  11. setContentView(R.layout.activity_main);

  12. //在Activity的应用

  13. try {

  14. ActivityInfo info = this.getPackageManager().getActivityInfo(

  15. getComponentName(), PackageManager.GET_META_DATA);

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

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

  18. } catch (NameNotFoundException e) {

  19. e.printStackTrace();

  20. }

  21. }
  22. /*  1 :在Activity的应用。

  23. xml代码段:

  24. <activity...>

  25. <meta-data android:name="myMsg" android:value="hello my activity"></meta-data>

  26. </activity>
  27. java代码段:

  28. ActivityInfo info=this.getPackageManager()

  29. .getActivityInfo(getComponentName(),

  30. PackageManager.GET_META_DATA);

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

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

  33. 2:在application的应用。

  34. xml代码段:

  35. <application...>

  36. <meta-data android:value="hello my application" android:name="myMsg"></meta-data>

  37. </application>
  38. java代码段:

  39. ApplicationInfo appInfo = this.getPackageManager()

  40. .getApplicationInfo(getPackageName(),

  41. PackageManager.GET_META_DATA);

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

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

  44. 3:在service的应用。

  45. xml代码段:

  46. <service android:name="MetaDataService">

  47. <meta-data android:value="hello my service" android:name="myMsg"></meta-data>

  48. </service>

  49. java代码段:

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

  51. ServiceInfo info=this.getPackageManager()

  52. .getServiceInfo(cn, PackageManager.GET_META_DATA);

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

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

  55. 4: 在receiver的应用。

  56. xml代码段:

  57. <receiver android:name="MetaDataReceiver">

  58. <meta-data android:value="hello my receiver" android:name="myMsg"></meta-data>

  59. <intent-filter>

  60. <action android:name="android.intent.action.PHONE_STATE"></action>

  61. </intent-filter>

  62. </receiver>

  63. java代码段:

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

  65. ActivityInfo info=context.getPackageManager()

  66. .getReceiverInfo(cn, PackageManager.GET_META_DATA);

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

  68. System.out.println("myMsg:"+msg);*/
  69. }

转自:http://blog.csdn.net/wwj_748/article/details/25079991

时间: 2024-10-10 01:37:20

Android-自定义meta-data扩展数据的相关文章

Android自定义照相机实现(拍照、保存到SD卡,利用Bundle在Acitivity交换数据)

Android自定义照相机实现 近期小巫在学校有一个创新项目,也不是最近,是一个拖了很久的项目,之前一直没有去搞,最近因为要中期检查,搞得我跟小组成员一阵忙活,其实开发一款照相机软件并不太难,下面就是通过自定义的方式来实现手机照相的功能. 创建一个项目:FingerTakePicture 首先来搞一下界面: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&qu

[android] 如何获取media文件的meta data信息

在app开发过程中,经常需要显示media文件的meta data信息,我们如何获取这些信息呢? MediaStore 首先想到的就是MediaStore类了,它为我们提供的丰富的属性,我们只要通过sqlite操作,就能获取这些属性提供的值啦. public static final String[] ItemImageProjection = new String[] { MediaStore.Images.ImageColumns.DISPLAY_NAME, MediaStore.Image

Android 自定义Adapter 但listview 只显示第一条数据

楼主让这个问题郁闷了一晚上.....在logcat里明明显示adapter的getview方法里的list大于一条数据 ,但posotion却一直是0.....运行后也只显示list[0]里面的数据....最后的最后原来错误出在布局文件上 我以前的是这样的; <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" > <!-- listv

双击CAD对象(具有扩展数据),显示自定义对话框实现方法

转自:Cad人生 链接:http://www.cnblogs.com/cadlife/p/3463337.html 题目:双击CAD对象,显示自定义对话框实现方法 内容粘贴如下: 主要是绑定两个事件:一个是 Application.DocumentManager.DocumentLockModeChanged ----- 该事件为文档锁定事件,一直在被监测中 一个是 Application.BeginDoubleClick ----- 该事件为应用程序的双击事件 1 class TlsAppli

Android自定义View(二、深入解析自定义属性)

转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51468648 本文出自:[openXu的博客] 目录: 为什么要自定义属性 怎样自定义属性 属性值的类型format 类中获取属性值 Attributeset和TypedArray以及declare-styleable ??在上一篇博客<Android自定义View(一.初体验)>中我们体验了自定义控件的基本流程: 继承View,覆盖构造方法 自定义属性 重写onMeasure方法测量宽

Android自定义评分控件:RatingStarView

RatingStarView Android自定义的评分控件,类似RatingBar那样的,使用星星图标(full.half.empty)作为rating值的“评分/打分控件”. 效果图 图1:RatingStarView控件支持的特性: 半颗星支持(实际支持任意小数) 填充色.底色.描边色 指定高度,宽度自适应 拐角弧度.描边宽度.星星间距 肥胖指数(star thickness),越胖越可爱 点击评分(不支持半颗星) 实现思路 下面是RatingStarView的实现设计. 如何画一颗星 S

Android页面跳转和数据传递

Android应用开发-页面跳转和数据传递 Activity Android四大组件之一 可以理解为Android中的界面,每一个界面都是一个Activity Activity的使用必须在清单文件中进行配置 在清单文件中, 创建第二个Activity 需要在清单文件中为其配置一个activity标签 标签中如果带有这个子节点,则会在系统中多创建一个快捷图标 <intent-filter> <action android:name="android.intent.action.M

Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38140505 自从Gallery被谷歌废弃以后,Google推荐使用ViewPager和HorizontalScrollView来实现Gallery的效果.的确HorizontalScrollView可以实现Gallery的效果,但是HorizontalScrollView存在一个很大的问题,如果你仅是用来展示少量的图片,应该是没问题的,但是如果我希望HorizontalScr

Android自定义视图四:定制onMeasure强制显示为方形

这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三:给自定义视图添加"流畅"的动画 Android自定义视图四:定制onMeasure强制显示为方形 上一篇开发之后的效果如上图.不过看着这张图,需要注意的不是我们自定义视图展示了什么,而是这个视图的大小和位置.你会看到这个折线图有一个特定的大小(size).这个size是怎么定的呢?现在的代

Android 自定义 SpinnerButton(转)

Android 自定义 SpinnerButton 模仿Android4.0的Spinner Button写的一个MySpinnerButton.这样在1.6~4.0.4版本都可以实现这种下拉框的效果了. 实现效果:点击屏幕上的Spinner Button,在按钮的下方会滑出一个下拉列表,滑动选择下拉列表中其中一个选项,则下拉列表收回,按钮上的文字显示为选项的内容.点击返回键或下拉列表外部区域,下拉列表收回.反复点击按钮,下拉列表反复执行滑出和收回动作. 运行图:    实现原理:使用Popup