Android Manifest

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

 
 
给各位看一个示例吧:
这是我定义的一个AndroidMenifest.xml配置文件
 
  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,我们如何来取得这两个组件的值呢?如下:
 
  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

Android Manifest <meta-data>的更多相关文章

  1. Android manifest之manifest标签详细介绍

    AndroidManifest详细介绍 本文主要对AndroidManifest.xml文件中各个标签进行说明.索引如下: 概要PART--01 manifest标签PART--02 安全机制和per ...

  2. Android manifest之系统自带的permission

    Android manifest之系统自带的permission 本文描述Android系统自带的permission.点击查看:“关于permission的原始定义和说明”.点击查看:“Androi ...

  3. Android Manifest&period;xml文件的结构及作用

    原文链接:http://android.eoe.cn/topic/android_sdk 每一个应用程序在工程的根目录下必须要有一个AndroidManifest.xml文件(一定要用这个名称).这个 ...

  4. Android manifest文件中的标签详细介绍

    官方文档 概要 每一个Android应用都应该包含一个manifest文件,即AndroidManifest.xml.它包含了程序运行的一些必备信息,比如:--为Java应用程序指定一个独一无二的名字 ...

  5. 【记】研究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 ...

  6. Android manifest 获取源代码

    /********************************************************************************* * Android manifes ...

  7. Android API之android&period;provider&period;ContactsContract&period;Data

    android.provider.ContactsContract.Data Constants for the data table, which contains data points tied ...

  8. android Manifest&period;xml选项

    结构 继承关系 public final class Manifest extends Object java.lang.Object android.Manifest 内部类 class  Mani ...

  9. Viewpager&plus;Fragment 跳转Activity报错android&period;os&period;TransactionTooLargeException&colon; data parcel size xxxxx bytes

    Viewpager + Fragment 跳转Activity报错android.os.TransactionTooLargeException: data parcel size xxxxx byt ...

  10. Android Manifest&period;xml详解

    一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它位于整个项目的根目录,描述了package中暴露的组件(activiti ...

随机推荐

  1. 强大的Sublime编辑器

    Sublime是一款功能非常强大的轻量级的代码及文本编辑工具,有关它的介绍和下载可以从官网http://www.sublimetext.com获取.尽管Sublime并非是一款完全免费的IDE开发工具 ...

  2. C&num; 截取带路径的文件名字&comma;扩展名&comma;等等 的几种方法

    C#对磁盘IO操作的时候,经常会用到这些,路径,文件,文件名字,文件扩展名. 之前,经常用切割字符串来实现, 可是经常会弄错. 尤其是启始位置,多少个字节,经常弄晕. 下面这种方法貌似比较简便: st ...

  3. Android开发艺术探索》读书笔记 &lpar;5&rpar; 第5章 理解RemoteViews

    第5章 理解RemoteViews 5.1 RemoteViews的应用 (1)RemoteViews表示的是一个view结构,它可以在其他进程中显示.由于它在其他进程中显示,为了能够更新它的界面,R ...

  4. OpenGLES 怎样在十天内掌握线性代数 - 希望这是真的!

    OpenGLES 怎样在十天内掌握线性代数 - 希望这是真的! 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致&q ...

  5. SQL中的Update、delete与inner join 联合使用

    Update XXX set XXX where 这种写法大家肯定都知道,才发现update和delete居然支持inner join的update方式,太神奇了. update的格式是 update ...

  6. 转:Selenium借助AutoIt识别上传(下载)详解

    AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作.它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动 ...

  7. Struts2学习笔记&lpar;七&rpar;——类型转换

    1.自动类型转换 Struts2内部提供大量类型转换器,用来完成数据类型转换问题: String和boolean.Boolean:完成字符串与布尔值之间的转换 String和char.Characte ...

  8. &lbrack;转&rsqb;application&period;properties详解 --springBoot配置文件

    本文转载:http://blog.csdn.net/lpfsuperman/article/details/78287265###; # spring boot application.propert ...

  9. C&num; 中的委托(Delegate)

    委托(Delegate) 是存有对某个方法的引用的一种引用类型变量.引用可在运行时被改变. 委托(Delegate)特别用于实现事件和回调方法.所有的委托(Delegate)都派生自 System.D ...

  10. SQA计划和系统测试规程

    SQA计划和系统测试规程 一.SQA计划 1.软件工程 我们小组所做的项目是图书馆管理系统.我们要准确的了解此软件的需求(能够注册登录,查询图书,借书,还书,查看借阅记录等),在此前提进行建模,基于场 ...