• android开发中获取<meta-data>数据


      在 AndroidManifest.xml 中,<meta-data>元素是一个键值对,往往被包含在<application> 、<activity>、<service>和<receiver>等元素中,但是不同父元素中<meta-data>读取方法也不同。

      <meta-data>基本结构:<meta-data android:name="string" android:resource="resource specification" android:value = "string" /> (其中resource、value两者选其一),一个组件元素能够包含任意数量的<meta-data>子元素,它们所有的值都会被收集在Bundle对象中,作为组件的 PackageItemInfo.metaData 字段。 

      android:name 元数据项的名字,需保证唯一性。

      android:resource 资源的一个引用,指定给这个项的值是该资源的id。该id可通过bundle.getInt()从<meta-data>中获取。

      android:value 指定给这一项的值,可以作为值来指定的数据类型并且组件用来找回那些值的Bundle方法如下。

     数据类型  示例 获取方法
     字符串  "abcd"  getString()
     整数  "1"  getInt()
     布尔  "true"  getBoolean()
     颜色  "#rgb", "#argb", "#rrggbb"  getInt()
     浮点  "1.1"  getFloat()

     

      

     

     

     

      

      一般的值可以通过value属性来指定,但是如果要指定一个资源id作为一个值,那么就要用resource属性来代替。假如 <meta-data android:name="test_name" android:value="test_value" />,则在不同父元素中读取方法如下所示:

    1、读取<application>中的<meta-data>
     1 import android.content.pm.ApplicationInfo;
     2 import android.content.pm.PackageManager;
     3 import android.content.pm.PackageManager.NameNotFoundException;
     4 try
     5 {
     6   ApplicationInfo info = this.getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
     7   String value = info.metaData.getString("test_name");
     8 }
     9 catch (NameNotFoundException e)
    10 {
    11   e.printStackTrace();
    12 }
    View Code
    2、读取<activity>中的<meta-data> 
     1 import android.content.pm.ActivityInfo;
     2 import android.content.pm.PackageManager;
     3 import android.content.pm.PackageManager.NameNotFoundException;
     4 try
     5 {
     6   ActivityInfo info = this.getPackageManager().getActivityInfo(getPackageName(), PackageManager.GET_META_DATA);
     7   String value = info.metaData.getString("test_name");
     8 }
     9 catch (NameNotFoundException e)
    10 {
    11   e.printStackTrace();
    12 } 
    View Code
    3、读取<service>中的<meta-data>
    1 ComponentName cn = new ComponentName(this, MetaDataService.class);
    2 ServiceInfo info = this.getPackageManager().getServiceInfo(cn, PackageManager.GET_META_DATA);
    3 String value = info.metaData.getString("test_name");
    View Code
    4、读取<receiver>中的<meta-data>
    1 ComponentName cn = new ComponentName(context, MetaDataReceiver.class);
    2 ActivityInfo info = context.getPackageManager().getReceiverInfo(cn, PackageManager.GET_META_DATA);
    3 String value = info.metaData.getString("test_name");
    View Code
    在孤独中思考,在思考中成熟,在成熟中升华
  • 相关阅读:
    Django-ORM
    Django-路由系统
    Django-(Request对象和Response对象)
    Django-(CBV和FBV)
    批量设置模板中的时间格式
    Django模板语言-(母板、组件、静态文件相关、simple_tag、inclusion_tag)
    yii2csrf攻击
    centos6更改密码
    ide vscode安装
    xshell配色方案
  • 原文地址:https://www.cnblogs.com/laogaoyang/p/5485118.html
Copyright © 2020-2023  润新知