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. }

android 获取application和activity下meta-data中的值的更多相关文章

  1. python+webdriver,选取Select下拉框中的值

    在选择下拉框中的值时遇到了困难,用driver.find_element_by_id("").send_keys("")进行赋值不能成功获取下拉框中的值.   ...

  2. 朝花夕拾-android 自定义application 管理activity的生命周期

    为了安全退出多个已创建的activity? 可以自定义application:myapplication. 增加一个list成员保存,一些关键的已创建的activity实例: private List ...

  3. android获取在res文件下的图片资源

    //得到该图片的id(name 是该图片的名字,"drawable" 是该图片存放的目录,getPackageName()是应用程序的包) int resID = getResou ...

  4. [Android] adb 命令 dumpsys activity , 用来看 task 中的activity。 (uninstall virus)

    用“adb shell dumpsys activity”命令再来查看一下系统运行的的任务,就会看到: ACTIVITY MANAGER ACTIVITIES (dumpsys activity ac ...

  5. js获取select下拉框中的值

    现在有一id为userType的下拉框,怎么获取选中的值: 用户类型: <select name="type" id="userType"> < ...

  6. vue手写的轮播图片,解决已经修改data中的值,页面标签已绑定,但页面没效果

    1.效果 2.index.html <!DOCTYPE html> <html lang="en"> <link> <meta chars ...

  7. robotframework 随机选中下拉框中的值

    示例脚本: click element id=provinceName #点击地区 省 wait until element is enabled xpath=.//*[@id='provinceNa ...

  8. selenium python选取下拉框中的值

    https://stackoverflow.com/questions/47689936/unable-to-scroll-and-select-desired-year-from-calender- ...

  9. MySQL下concat函数中null值问题

    在mysql中,使用CONCAT(str1,str2,...)函数拼接字符串的过程中,如果你拼接的字段当中有值为null,那么拼接的结果就为null 注: select CONCAT(字段1,字段2) ...

随机推荐

  1. 字符设备驱动另一种写法—mmap方法操作LED

    最近在看韦老师的视频,讲解了很多种字符设备的驱动写法.经过自己的研究之后,我发现还有另外一种写法,直接在应用层操作,省去了内核中的地址映射部分,使得用户可以在应用层直接操作LED.        mm ...

  2. hdu3555(数位DP dfs/递推)

    Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submi ...

  3. 869C

    dp 我好像很zz... 想了好长好长时间,然后没想出来,怒掉rating... 其实我们可以吧三种颜色两两计算,因为这样加入第三种颜色不会影响之前的方案,那么我们跑一个dp,计算数量分别为a,b的方 ...

  4. 使用VS进行打包程序解决生成两个文件的问题(压缩后只有一个exe)

    使用VS打包创建setup相信大家都挺熟的了,不熟的话网上也有很多,就不做介绍了,现在给大家写下怎么将生成的那些文件夹以及setup.exe和.msi 文件打包成一个exe 我们这里使用的是Winra ...

  5. arcgis for silverlight 相关学习资料整理

    Arcgis Resources:http://resources.arcgis.com/en/home/ esri中文官方论坛:http://www.gisall.com/portal.php 爱吃 ...

  6. HDU 5944 Fxx and string (暴力)

    题意:给定一个字符串,问有多少个三元组满足 i, j, k组成一个等比数列,并且s[i] = 'y', s[j] = 'r', s[k] = 'x',且j/i ,j/k中至少一个是整数. 析:直接暴力 ...

  7. 扭曲效果 效率优化 GrapPass,CommandBuffer对比

    屏幕图像捕捉: Shader的GrabPass GrabPass可以很方便地捕获当前渲染时刻的FrameBuffer中的图像. 其原理就是从当前FrameBuffer中copy一份纹理,通过SetTe ...

  8. bzoj 3709: [PA2014]Bohater【贪心】

    先打能回血的,按消耗从小到大打: 然后按回血量降序打剩下的(把消耗和回血反着看就是上一种怪,打法一样): 中间体力小于0就输出无解 #include<iostream> #include& ...

  9. mac下配置nginx php

    修改 php-fpm 文件 1.执行命令: sudo cp /private/etc/php-fpm.conf.default /private/etc/php-fpm.conf 2.找到目录下的 p ...

  10. Go语言Flag的简单示例

    flag 命令行参数解析,大家可能不太清楚是什么命令行参数解析,不要紧,我们来看看: 他就是干这个活的 func FlagTest1(){ var username string var userag ...