您的位置:首页 > 移动开发

meta-data的使用

2014-02-12 16:27 302 查看
在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 -->  
        <meta-data android:name="application_name" android:value="application_value" />  

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

 
获取meta-data

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

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


 
二,在activity中

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

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


获取meta-data

ActivityInfo actInfo = mContext.getPackageManager().getActivityInfo(  

                    getComponentName(), PackageManager.GET_META_DATA);  
            String msg = actInfo.metaData.getString("activity_name");  

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


三,在service中

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

<!-- 服务 -->
<service android:name=".MyService">
<meta-data android:name="service_name" android:value="service_value" />
</service>


获取meta-data
ComponentName cn = new ComponentName(this, MyService.class);  

        try {  
            ServiceInfo serInfo = this.getPackageManager().getServiceInfo(cn,  
                    PackageManager.GET_META_DATA);  
        } catch (NameNotFoundException e) {  
            e.printStackTrace();  
        }  
        String msg = serInfo.metaData.getString("service_name");  

ComponentName cn = new ComponentName(this, MyService.class);
try {
ServiceInfo serInfo = this.getPackageManager().getServiceInfo(cn,
PackageManager.GET_META_DATA);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
String msg = serInfo.metaData.getString("service_name");


四,在receiver中,也就是广播接收者(拨打电话的时候会看到toast消息)
<receiver android:name=".MyReceiver">  

            <meta-data android:name="receiver_name" android:value="receiver_value" />  
            <intent-filter>  
                <action android:name="android.intent.action.PHONE_STATE" />  
            </intent-filter>  
        </receiver>  

<receiver android:name=".MyReceiver">
<meta-data android:name="receiver_name" android:value="receiver_value" />
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>


获取meta-data
if (TextUtils.equals("android.intent.action.PHONE_STATE", intent  

                .getAction())) {  
            ComponentName cn = new ComponentName(context, MyReceiver.class);  
            try {  
                ActivityInfo info = context.getPackageManager().getReceiverInfo(cn,  
                        PackageManager.GET_META_DATA);  
            } catch (NameNotFoundException e) {  
                e.printStackTrace();  
            }  
            String msg = info.metaData.getString("receiver_name");  
            // 打电话测试即可  
            Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();  
        }  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息