zoukankan      html  css  js  c++  java
  • metadata元数据

    1 <receiver android:name=".ViewWidget" android:label="@string/app_name">
    2    ....
    3    <meta-data android:name="cn.android" android:value="liming"/>   
    4    <meta-data android:name=“age" android:value=“30"/> 
    5    <!-- 使用资源文件中存放的字符串数据 -->
    6    <meta-data android:name=“other" android:value="@string/other" />
    7    <!-- 使用资源的ID作为resid的值 -->
    8    <meta-data android:name=“resid" android:resource="@string/resid" />
    9 </receiver>

    上面<meta-data>节点的可以包含在<activity> <activity-alias> <service> <receiver>四个元素中,用于为组件提供名值对数据,组件中可以定义多个<meta-data>节点,这些<meta-data>节点定义的值都会被存放在Bundle对象并作为组件PackageItemInfo.metaData字段值,要访问这些值可以这样做:

     1  ActivityInfo info = context.getPackageManager().getReceiverInfo(new ComponentName(context, ViewWidget.class), PackageManager.GET_META_DATA);
     2 
     3  String name = info.metaData.getString("cn.android");
     4 
     5  int age = info.metaData.getInt(“age");
     6 
     7  String other= info.metaData.getString("other");
     8 
     9  int id = info.metaData.getInt(“resid");
    10 
    11 //如果<meta-data>定义在Activity下,用getPackageManager().getActivityInfo()方法

    demo:

    1.清单文件

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     3     package="com.android.hzy.metadata"
     4     android:versionCode="1"
     5     android:versionName="1.0" >
     6 
     7     <uses-sdk
     8         android:minSdkVersion="8"
     9         android:targetSdkVersion="8" />
    10 
    11     <application
    12         android:allowBackup="true"
    13         android:icon="@drawable/ic_launcher"
    14         android:label="@string/app_name"
    15         android:theme="@style/AppTheme" >
    16         <activity
    17             android:name="com.android.hzy.metadata.MainActivity"
    18             android:label="@string/app_name" >
    19             <intent-filter>
    20                 <action android:name="android.intent.action.MAIN" />
    21 
    22                 <category android:name="android.intent.category.LAUNCHER" />
    23             </intent-filter>
    24             <meta-data android:name="name" android:value="火影忍者"/>
    25             <meta-data android:name="age" android:value="7"/>
    26             <meta-data android:name="other" android:value="@string/meta"/>
    27             <!-- key值是一样的  value:引用的是id -->
    28             <meta-data android:name="res" android:resource="@string/res"/>
    29         </activity>
    30     </application>
    31 
    32 </manifest>

    2.strings.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <resources>
     3 
     4     <string name="app_name">元数据</string>
     5     <string name="hello_world">Hello world!</string>
     6     <string name="menu_settings">Settings</string>
     7     <string name="meta">META</string>
     8     <string name="res">resourse</string>
     9 
    10 </resources>

    3.MainActivity

     1 package com.android.hzy.metadata;
     2 
     3 import android.app.Activity;
     4 import android.content.ComponentName;
     5 import android.content.pm.ActivityInfo;
     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.view.View;
    11 
    12 public class MainActivity extends Activity {
    13 
    14     @Override
    15     protected void onCreate(Bundle savedInstanceState) {
    16         super.onCreate(savedInstanceState);
    17         setContentView(R.layout.activity_main);
    18     }
    19 
    20     public void get(View v){
    21         // activity的管理,动态的数据
    22 //        ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    23         
    24         try {
    25             // 包管理器
    26             PackageManager pm = getPackageManager();
    27             ComponentName component = new ComponentName(this,MainActivity.class);
    28             
    29             ActivityInfo activityInfo = pm.getActivityInfo(component, PackageManager.GET_META_DATA);
    30             Bundle bundle = activityInfo.metaData;
    31             String name = bundle.getString("name");
    32             int age = bundle.getInt("age");
    33             String other = bundle.getString("other");
    34             String res = getString(bundle.getInt("res"));
    35             
    36             Log.i("i", " name " + name);
    37             Log.i("i", " age " + age);
    38             Log.i("i", " other " + other);
    39             Log.i("i", " res " + res);
    40             
    41         } catch (Exception e) {
    42             // TODO Auto-generated catch block
    43             e.printStackTrace();
    44         }
    45     }
    46 }

     

  • 相关阅读:
    自学Linux命令的四种方法
    linux命令学习
    设计师提高效率必备的10大在线工具
    基于CNN网络的汉字图像字体识别及其原理
    字库的产生
    开篇
    智能建筑系统集成发展目标——节能建筑
    建筑节能案例解析:拜尔的生态幼儿园
    能源管理系统(Synchro EMS)技术架构
    能源管理系统(Synchro EMS)
  • 原文地址:https://www.cnblogs.com/androidez/p/2909469.html
Copyright © 2011-2022 走看看