meta-data的使用

来源:互联网 发布:js学习资料 编辑:程序博客网 时间:2024/04/30 13:55
在manifest里面我们经常会发现有几个meta-data标签,他们常被用来配置参数常量。
例如:<meta-data android:name="HIAPK_RECDID" android:value="2238872"/>
<meta-data android:name="UMENG_APPKEY" android:value="4dfb66ee431fe371d9000063" />
<meta-data android:name="appkey" android:value="110000" />

这三个标签是写在application下面的。

meta-data还可以出现在activity,receiver,service标签中。

一,在application中

<!-- app -->  
  1.         <meta-data android:name="application_name" android:value="application_value" />  

 

获取meta-data

ApplicationInfo appInfo = this.getPackageManager().getApplicationInfo(  
  1.                     getPackageName(), PackageManager.GET_META_DATA);  
  2.             String msg = appInfo.metaData.getString("application_name");  


 

二,在activity中

<!-- Activity -->  
  1.         <activity android:name=".MyActivity" android:label="@string/app_name">  
  2.             <intent-filter>  
  3.                 <action android:name="android.intent.action.MAIN" />  
  4.                 <category android:name="android.intent.category.LAUNCHER" />  
  5.             </intent-filter>  
  6.             <meta-data android:name="activity_name" android:value="activity_value" />  
  7.         </activity>  

获取meta-data

ActivityInfo actInfo = mContext.getPackageManager().getActivityInfo(  
  1.                     getComponentName(), PackageManager.GET_META_DATA);  
  2.             String msg = actInfo.metaData.getString("activity_name");  

三,在service中

  1.         <service android:name=".MyService">  
  2.             <meta-data android:name="service_name" android:value="service_value" />  
  3.         </service>  

获取meta-data

ComponentName cn = new ComponentName(this, MyService.class);  

  1.         try {  
  2.             ServiceInfo serInfo = this.getPackageManager().getServiceInfo(cn,  
  3.                     PackageManager.GET_META_DATA);  
  4.         } catch (NameNotFoundException e) {  
  5.             e.printStackTrace();  
  6.         }  
  7.         String msg = serInfo.metaData.getString("service_name");  

四,在receiver中,也就是广播接收者(拨打电话的时候会看到toast消息)
<receiver android:name=".MyReceiver">  
  1.             <meta-data android:name="receiver_name" android:value="receiver_value" />  
  2.             <intent-filter>  
  3.                 <action android:name="android.intent.action.PHONE_STATE" />  
  4.             </intent-filter>  
  5.         </receiver>  

获取meta-data

if (TextUtils.equals("android.intent.action.PHONE_STATE", intent  

  1.                 .getAction())) {  
  2.             ComponentName cn = new ComponentName(context, MyReceiver.class);  
  3.             try {  
  4.                 ActivityInfo info = context.getPackageManager().getReceiverInfo(cn,  
  5.                         PackageManager.GET_META_DATA);  
  6.             } catch (NameNotFoundException e) {  
  7.                 e.printStackTrace();  
  8.             }  
  9.             String msg = info.metaData.getString("receiver_name");  
  10.             // 打电话测试即可  
  11.             Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();  
  12.         }  
0 0
原创粉丝点击