用meta-data配置参数

时间:2022-02-01 23:41:38
在接入第三方渠道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>是提供组件额外的数据用的,它本身就是一个键值对,可以自定义名称和值。它可以包含在以下组件当中:

<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中配置如下

  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代码如下

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

二,在service中

xml中配置如下

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

java代码如下

  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中配置如下

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

java代码如下

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

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

  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代码如下

  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之类的参数。

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

  1. Scala调用Kafka的生产者和消费者Demo,以及一些配置参数整理

    kafka简介 Kafka是apache开源的一款用Scala编写的消息队列中间件,具有高吞吐量,低延时等特性. Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受 ...

  2. MySQL Cluster 7&period;3&period;5 集群配置参数优化(优化篇)

    按照前面的教程:MySQL Cluster 7.3.5 集群配置实例(入门篇),可快速搭建起基础版的MySQL Cluster集群,但是在生成环境中,还是有很多问题的,即配置参数需要优化下, 当前生产 ...

  3. mha配置参数详解

    mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...

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

    MySql配置参数 很全的Mysql配置参数说明 1. back_log 指定MySQL可能的连接数量.当MySQL主线程在很短的时间内得到非常多的连接请求,该参数就起作用,之后主线程花些时间(尽管很 ...

  5. Spark配置参数详解

    以下是整理的Spark中的一些配置参数,官方文档请参考Spark Configuration. Spark提供三个位置用来配置系统: Spark属性:控制大部分的应用程序参数,可以用SparkConf ...

  6. MongoDB启动文件配置参数详解

    接手的MongoDB只有一个日志文件,体积非常大,排错不便.在找解决办法的时候发现MongoDB的启动文件配置项超级多,于是产生了解释配置参数的想法. mongod服务有两种启动方式 一种是通过配置文 ...

  7. 【记】研究Sharding-JDBC遇到的一个异常&lpar;Caused by&colon; io&period;shardingsphere&period;core&period;exception&period;ShardingException&colon; Cannot get uniformed table structure for &grave;t&grave;&period; The different meta data of actual tables are as follows&rpar;

    一.异常信息 Caused by: io.shardingsphere.core.exception.ShardingException: Cannot get uniformed table str ...

  8. MHA配置参数详解 【转】

    mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...

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

    常用的配置参数1. --prefix=/usr/local/php 指定 php 安装目录 install architecture-independent files in PREFIX 默认/us ...

  10. nfs的无敌时间更改的配置参数

    nfs服务端重启之后,共享文件夹进入grace time(无敌时间) 客户端在服务端重启后写入数据大概要等90秒 nfs配置文件:/etc/sysconfig/nfs [root@backup ~]# ...

随机推荐

  1. 字符串处理:ABAP中的正则表达式

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  2. Recover deleted pictures in iOS 9

    A case about business secret. The suspect is an engineer in Hitec company, and compeitiors pay lots ...

  3. Java知识点:内部类

    内部类class文件命名规则 普通内部类.静态内部类:<Outer>\$<Inner>.class,其中<Outer>为外部类类名,<Inner>为内部 ...

  4. OC - 20&period;多图下载

    效果图 常见问题及解决方法 图片重复下载 将内存保存在内存或沙盒中. 若下载的图片量较大,则会出现UI界面不流畅的现象 在子线程中执行下载操作,然后回到主线程成中进行UI界面的刷新. 由于cell的循 ...

  5. Unity 调用android插件

    1. Unity的Bundle Identifier必须和你的android报名一致 Activity和View的区别: Activity应该是一个展示页面,View是页面上一些按钮视图等等. 如何调 ...

  6. ASP&period;NET Core 网站在Docker中运行

    Docker作为新一代的虚拟化方式,未来肯定会得到广泛的应用,传统虚拟机的部署方式要保证开发环境.测试环境.UAT环境.生产环境的依赖一致性,需要大量的运维人力,使用Docker我们可以实现一次部署, ...

  7. C&plus;&plus;与Java通过WebService通信&lpar;下&rpar;

    一. 前言 本篇讲述如何通过Java客户端访问C++服务端发布的SOAP模式的WebService接口.文档中的样例代码拷贝出去即可运行,所有的代码都是本地测试OK的:本文不但解决了接口调用的问题,同 ...

  8. 论文阅读笔记五十四:Gradient Harmonized Single-stage Detector(CVPR2019)

    论文原址:https://arxiv.org/pdf/1811.05181.pdf github:https://github.com/libuyu/GHM_Detection 摘要 尽管单阶段的检测 ...

  9. &lbrack;Swift&rsqb;LeetCode808&period; 分汤 &vert; Soup Servings

    There are two types of soup: type A and type B. Initially we have N ml of each type of soup. There a ...

  10. Qt 图像缩放显示

    1. QImage Image; Image.load(":/images/f1.png"); QPixmap pixmap = QPixmap::fromImage(Image) ...