meta-data在AndroidManifest中是以键值对的形式存在的,可以将meta-data放在application根节点下,也可以放在某个activity节点下。因为存放的位置不同,因此获取value时也要使用对应的方法,下面是我写的一个小测试。

代码如下:

先是在AndroidManifest中的application和mainActivity下添加两个meta-data属性。

  1. <application
  2. android:allowBackup="true"
  3. android:icon="@drawable/ic_launcher"
  4. android:label="@string/app_name"
  5. android:theme="@style/AppTheme" >
  6. <meta-data
  7. android:name="com.lzy.test"
  8. android:value="测试" />
  9. <activity
  10. android:name=".MainActivity"
  11. android:label="@string/app_name" >
  12. <meta-data
  13. android:name="com.example.metatest.MainActivity.com.lzy.activity.test"
  14. android:value="Activity测试" />
  15. <intent-filter>
  16. <action android:name="android.intent.action.MAIN" />
  17. <category android:name="android.intent.category.LAUNCHER" />
  18. </intent-filter>
  19. </activity>
  20. </application>

接下来在mainActivity中来获取这两个属性的值。

    1. package com.example.metatest;
    2. import android.app.Activity;
    3. import android.content.ComponentName;
    4. import android.content.pm.ActivityInfo;
    5. import android.content.pm.ApplicationInfo;
    6. import android.content.pm.PackageManager;
    7. import android.content.pm.PackageManager.NameNotFoundException;
    8. import android.os.Bundle;
    9. import android.util.Log;
    10. import android.widget.Toast;
    11. /**
    12. * meta 测试
    13. *
    14. * @author Administrator
    15. *
    16. */
    17. public class MainActivity extends Activity {
    18. public static final String TEST = "com.lzy.test";
    19. public static final String ACTIVITYTEST = MainActivity.class.getName()+".com.lzy.activity.test";
    20. @Override
    21. protected void onCreate(Bundle savedInstanceState) {
    22. super.onCreate(savedInstanceState);
    23. setContentView(R.layout.activity_main);
    24. String test = getMetaDataStringApplication(TEST, null);
    25. String activityTest = getMetaDataStringFromActivity(ACTIVITYTEST, null);
    26. Toast.makeText(this, test+"--"+activityTest, Toast.LENGTH_LONG).show();
    27. }
    28. /**
    29. * 根据key从Application中返回的Bundle中获取value
    30. *
    31. * @param key
    32. * @param defValue
    33. * @return
    34. */
    35. private String getMetaDataStringApplication(String key, String defValue) {
    36. Bundle bundle = getAppMetaDataBundle(getPackageManager(), getPackageName());
    37. if (bundle != null && bundle.containsKey(key)) {
    38. return bundle.getString(key);
    39. }
    40. return defValue;
    41. }
    42. /**
    43. * 获取Application中的meta-data.
    44. *
    45. * @param packageManager
    46. * @param packageName
    47. * @return
    48. */
    49. private Bundle getAppMetaDataBundle(PackageManager packageManager,
    50. String packageName) {
    51. Bundle bundle = null;
    52. try {
    53. ApplicationInfo ai = packageManager.getApplicationInfo(packageName,
    54. PackageManager.GET_META_DATA);
    55. bundle = ai.metaData;
    56. } catch (NameNotFoundException e) {
    57. Log.e("getMetaDataBundle", e.getMessage(), e);
    58. }
    59. return bundle;
    60. }
    61. /**
    62. * 根据key从Activity中返回的Bundle中获取value
    63. *
    64. * @param key
    65. * @param defValue
    66. * @return
    67. */
    68. private String getMetaDataStringFromActivity(String key, String defValue) {
    69. Bundle bundle = getActivityMetaDataBundle(getPackageManager(), getComponentName());
    70. if (bundle != null && bundle.containsKey(key)) {
    71. return bundle.getString(key);
    72. }
    73. return defValue;
    74. }
    75. /**
    76. * 获取Activity中的meta-data.
    77. *
    78. * @param packageManager
    79. * @param component
    80. * @return
    81. */
    82. private Bundle getActivityMetaDataBundle(PackageManager packageManager, ComponentName component) {
    83. Bundle bundle = null;
    84. try {
    85. ActivityInfo ai = packageManager.getActivityInfo(component,
    86. PackageManager.GET_META_DATA);
    87. bundle = ai.metaData;
    88. } catch (NameNotFoundException e) {
    89. Log.e("getMetaDataBundle", e.getMessage(), e);
    90. }
    91. return bundle;
    92. }
    93. }

最新文章

  1. nRF24L01芯片控制——迈向无线的第一步
  2. Ubuntu16.04 apache2 wsgi 部署django
  3. T-SQL的回车和换行符(SQL)
  4. 在jsp页面解析json的2种方法
  5. nginx性能配置参数说明:
  6. 提供进销存、ERP系统快速开发框架源码 (C#+SQL)
  7. jquery选择器专题
  8. Spark Yarn-cluster与Yarn-client
  9. 观未见,行不止 &mdash;&mdash; Power BI 两周年技术和方案交流圆桌会议纪实
  10. 聊聊 Scala 的伴生对象及其意义
  11. Nuget私有服务搭建实战
  12. 【朝花夕拾】Android性能篇之(五)Android虚拟机
  13. py-day3-6 python map函数
  14. 【Teradata】grouping和rollup窗口函数
  15. 统计各个数据库的各个数据表的总数,然后写入到excel中
  16. 20172327 2018-2019-1 《第一行代码Android》第一章学习总结
  17. Docker(一)Linux开启你的Docker之旅
  18. 在eclipse上搭建Roku开发环境
  19. How To Setup Apache Hadoop On CentOS
  20. FCCMBBTN.RES

热门文章

  1. 视音频编解码基本术语及解释&amp;MediaInfo
  2. appium的get_attribute方法
  3. jenkins配置发送邮件时,日志中显示发送成功,但是邮箱没有收到邮件
  4. EF通过反射追踪修改记录.适合记录变更系统
  5. Silverlight 后台利用代码触发 Button 的Click事件
  6. centos 6.2 pptp 客户端 安装(转载)
  7. 0 Java实现 一篇文章说尽设计模式之六大原则
  8. bzoj 4916: 神犇和蒟蒻【欧拉函数+莫比乌斯函数+杜教筛】
  9. ACM复习专项
  10. Linux环境下Apache反向代理金蝶中间件Apusic集群