版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/wwj_748/article/details/25079991

Android-自己定义meta-data扩展数据
2014年5月5日
在接入第三方渠道SDK的时候,常常会看到其配置文件AndroidManifest.xml有相似例如以下的定义:
 <!-- appid -->
<meta-data
android:name="APP_ID"
android:value="037810BCE1D2260F32017643AC7D980C" /> <!-- 公布渠道(可选) -->
<meta-data
android:name="APP_CHANNEL"
android:value="QQ_CENTER" />

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

给各位看一个演示样例吧:
这是我定义的一个AndroidMenifest.xml配置文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.wwj.metadata"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.wwj.metadata.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- 在Activity定义的meta-data -->
<meta-data
android:name="myMsg"
android:value="hello my activity" >
</meta-data>
</activity> <!-- 在Application定义的meta-data -->
<meta-data
android:name="myMsg"
android:value="hello my application" >
</meta-data>
</application> </manifest>
笔者这里在Application级别和Activity级别都定义了一个meta-data,我们怎样来取得这两个组件的值呢?例如以下:
package com.wwj.metadata;

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//在Activity的应用
try {
ActivityInfo info = this.getPackageManager().getActivityInfo(
getComponentName(), PackageManager.GET_META_DATA);
String msg = info.metaData.getString("myMsg");
System.out.println("myMsg:" + msg);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
} /* 1 :在Activity的应用。
xml代码段:
<activity...>
<meta-data android:name="myMsg" android:value="hello my activity"></meta-data>
</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代码段:
<application...>
<meta-data android:value="hello my application" android:name="myMsg"></meta-data>
</application> 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代码段:
<service android:name="MetaDataService">
<meta-data android:value="hello my service" android:name="myMsg"></meta-data>
</service>
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代码段:
<receiver android:name="MetaDataReceiver">
<meta-data android:value="hello my receiver" android:name="myMsg"></meta-data>
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"></action>
</intent-filter>
</receiver>
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. python爬取网易评论
  2. maven-surefire-plugin的乱码问题
  3. 编写高质量代码改善C#程序的157个建议
  4. .net深入体验与实战精要--ASP.NET开发大杂烩(转)
  5. 在IDEA上用python来连接集群上的hive
  6. [010]转+修正---C++的贪吃蛇程序(未用面向对象封装)
  7. iOS应用架构谈 开篇 (转)
  8. HTML5API___manifest
  9. cf-#189-div 2
  10. 模块化开发AraeRegistration
  11. jdk自带的动态代理
  12. thinkjs学习-this.assign传递数据和ajax调用后台接口
  13. vue.js使用webpack发布,部署到服务器上之后在浏览器中可以查看到vue文件源码
  14. Spring-Security自定义登录页&amp;inMemoryAuthentication验证
  15. [bzoj1355][Baltic2009]Radio Transmission_KMP
  16. TestNG进行接口测试,脚本及可维护性框架
  17. c++ primer plus 第二章 \n与endl在输出上的区别
  18. 第20章 定义客户端 - Identity Server 4 中文文档(v1.0.0)
  19. h5-canvas(其他api)
  20. 编程菜鸟的日记-初学尝试编程-编写函数实现strcmp功能

热门文章

  1. 调整Redmine的用户显示格式
  2. Python归并排序(递归实现)
  3. hdu 4059 数论+高次方求和+容斥原理
  4. 关于extern的说明
  5. html之全局属性
  6. java-ApiDemo
  7. Scrapy爬虫入门系列3 将抓取到的数据存入数据库与验证数据有效性
  8. jq 获取select text
  9. MySQL - 统计每个月生日的人数
  10. -webkit-transition: all .2s ease-in-out;