用meta-data配置参数

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

  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>

<meta-data android:name="appid" android:value="b03c5cfef65ed30108f0a3fd82c3f6b4" />
<meta-data android:name="appsecret" android:value="LWLPg7pU4cwrcyy8PwDeGuaY0BHUoX" />

<meta-data android:name="appkey" android:value="110000" />

这三个标签是写在application下面的。后来我又搜了一下,meta-data还可以出现在activity,receiver,service标签中。包括上面的application中。一共有四个地方可以使用到。

一,在activity中

xml中配置如下

[html] view plaincopy

  1. <!-- Activity -->
  2. <activity android:name=".MyActivity" android:label="@string/app_name">
  3. <intent-filter>
  4. <action android:name="android.intent.action.MAIN" />
  5. <category android:name="android.intent.category.LAUNCHER" />
  6. </intent-filter>
  7. <meta-data android:name="activity_name" android:value="activity_value" />
  8. </activity>

java代码如下

[html] view plaincopy

  1. ActivityInfo actInfo = mContext.getPackageManager().getActivityInfo(
  2. getComponentName(), PackageManager.GET_META_DATA);
  3. String msg = actInfo.metaData.getString("activity_name");

二,在service中

xml中配置如下

[html] view plaincopy

  1. <!-- 服务 -->
  2. <service android:name=".MyService">
  3. <meta-data android:name="service_name" android:value="service_value" />
  4. </service>

java代码如下

[html] view plaincopy

  1. ComponentName cn = new ComponentName(this, MyService.class);
  2. try {
  3. ServiceInfo serInfo = this.getPackageManager().getServiceInfo(cn,
  4. PackageManager.GET_META_DATA);
  5. } catch (NameNotFoundException e) {
  6. e.printStackTrace();
  7. }
  8. String msg = serInfo.metaData.getString("service_name");

三,在application中

xml中配置如下

[html] view plaincopy

  1. <!-- app -->
  2. <meta-data android:name="application_name" android:value="application_value" />

java代码如下

[html] view plaincopy

  1. ApplicationInfo appInfo = this.getPackageManager().getApplicationInfo(
  2. getPackageName(), PackageManager.GET_META_DATA);
  3. String msg = appInfo.metaData.getString("application_name");

四,在receiver中,也就是广播接收者(拨打电话的时候会看到toast消息)
xml中配置如下

[html] view plaincopy

  1. <receiver android:name=".MyReceiver">
  2. <meta-data android:name="receiver_name" android:value="receiver_value" />
  3. <intent-filter>
  4. <action android:name="android.intent.action.PHONE_STATE" />
  5. </intent-filter>
  6. </receiver>

java代码如下

[html] view plaincopy

  1. if (TextUtils.equals("android.intent.action.PHONE_STATE", intent
  2. .getAction())) {
  3. ComponentName cn = new ComponentName(context, MyReceiver.class);
  4. try {
  5. ActivityInfo info = context.getPackageManager().getReceiverInfo(cn,
  6. PackageManager.GET_META_DATA);
  7. } catch (NameNotFoundException e) {
  8. e.printStackTrace();
  9. }
  10. String msg = info.metaData.getString("receiver_name");
  11. // 打电话测试即可
  12. Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
  13. }

总结:

这个数据配置为什么要这么写,我还没发现它的好,以后慢慢领悟再来续写。

我觉得大可以写一个ConstData类来存放id,key之类的参数。

时间: 2024-10-10 09:29:04

用meta-data配置参数的相关文章

FastDFS配置参数详解

tracker.conf配置详解 # is this config file disabled # false for enabled # true for disabled disabled=false # 这个配置文件是否不生效,呵呵(改成是否生效是不是会让人感觉好点呢?) false 为生效(否则不生效) true反之 # bind an address of this host # empty for bind all addresses of this host bind_addr=

DRBD配置参数

用户手册: http://www.drbd.org/users-guide 语法及详解参数: http://www.drbd.org/users-guide-emb/re-drbdconf.html 官方示例: http://www.drbd.org/users-guide drbd及其配置文件中的相关名词: failover:失效转移.通俗地说,即当A无法为客户服务时,系统能够自动地切换,使B能够及时地顶上继续为客户提供服务,且客户感觉不到这个为他提供服务的对象已经更换.(注:来自百度百科.)

SpringCloud : 接入 微信公众号平台(三)、获取JsSDK配置参数

Java: import com.phpdragon.wechat.proxy.config.WeChatConfig; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.bean.WxJsapiSignature; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.mp.api.WxMpService;

02 jqGrid colModel配置参数

colModel配置语法示例 -收缩JavaScript代码 jQuery("#gridid").jqGrid({//...   colModel: [ {name:'name1', index:'index1'...}, {...}, ... ],//...}); 下表列出了colModel可用的属性.name属性是唯一需要配置.colModel配置可以读写通过getColProp和setColProp方法. 配置项 类型 描述 默认值 align string 定义单元格中内容对齐

Ceph配置参数(三)

Ceph配置参数(一) Ceph配置参数(二) 8.MONITOR CONFIG REFERENCE http://ceph.com/docs/master/rados/configuration/mon-config-ref/ 客户端在读写数据前,都比去和monitor取得联系,获得cluster map,结合CRUSH算法计算得到对象的位置. (1)最小配置 生成一个fsid和monitorde的最小配置,配置字段[mon]或[mon.a],ceph监视器默认监听6789端口. 主机名(e.

jquery的uploadify插件多文件上传配置参数详解

最近做了个多文件上传,需要限制上传文件类型的例子.以前没做过找了一些资料,下次有用.同时也给大家做参考. uploader: uploadify.swf 文件的相对路径,该swf文件是一个带有文字BROWSE的按钮,点击后淡出打开文件对话框,默认值:uploadify.swf. script: 后台处理程序的相对路径 .默认值:uploadify.php checkScript:用来判断上传选择的文 件在服务器是否存在的后台处理程序的相对路径 fileDataName:设置一个名字,在服务器处理

mysql配置参数详解

查看配置参数可以用下面的命令: show variables like '%innodb%';     #查看innodb相关配置参数 show status  like '%innodb%';           #查看innodb相关的运行时参数 show global status like 'open%tables'; # 查看全局的运行时参数,加上global是对当前mysql服务器中运行的所有数据库实例进行统计.不加global则只对当前数据库实例进行统计. my.cnf参数配置 [

NHibernate 支持的数据库及配置参数

理论上支持的数据库 NHibernate is primarily tested on Microsoft SQL Server 2000. It is also known to work on these databases: Microsoft SQL Server 2005/2000 Oracle Microsoft Access Firebird PostgreSQL DB2 UDB MySQL SQLite Microsoft SQL Server 2005/2000 SQL Ser

php源码安装常用配置参数和说明

常用的配置参数1. --prefix=/usr/local/php 指定 php 安装目录 install architecture-independent files in PREFIX 默认/usr/local2.--with-config-file-path=PATH php.ini的存放位置 Set the path in which to look for php.ini [PREFIX/lib] --with-config-file-scan-dir=PATH php.ini的扩展目

MySql配置参数很全的Mysql配置参数说明

MySql配置参数 很全的Mysql配置参数说明 1. back_log 指定MySQL可能的连接数量.当MySQL主线程在很短的时间内得到非常多的连接请求,该参数就起作用,之后主线程花些时间(尽管很短)检查连接并且启动一个新线程. back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中.如果系统在一个短时间内有很多连接,则需 要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小.不同的操作系统在这个队列大小上有它自己的限制.试图设定b