Android 获取 AndroidManifest.xml 中 <meta-data> 元素的值

来源:互联网 发布:东风标致 308 知乎 编辑:程序博客网 时间:2024/04/26 17:20
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ServiceInfo;
import android.util.Log;


import com.hua.main.MainActivity;
import com.hua.main.MetaDataService;


/**
 * Created by Administrator on 2016/5/24.
 */
public class PublicUtils {
    /**
     * 1 :在Activity应用<meta-data>元素。
             xml代码段:
             <activity...>
             <meta-data android:name="data_Name" android:value="hello my activity"></meta-data>
             </activity>
     */


    public static String getActivityMetaData(Context context,String metaDataKey){
        ActivityInfo info = null;
        try {
            info = context.getPackageManager().getActivityInfo(((Activity)context).getComponentName(), PackageManager.GET_META_DATA);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        String metaDataValue =info.metaData.getString(metaDataKey);
        return metaDataValue;
    }


    /**
     *
     * @param context
     * @param metaDataKey
     * @param clazz Activity.class
     * @return
     */
    public static String getActivityMetaData(Context context,String metaDataKey, Class clazz){
        ComponentName cn = new ComponentName(context, clazz);
        ActivityInfo info = null;
        try {
            info = context.getPackageManager().getActivityInfo(cn, PackageManager.GET_META_DATA);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        String metaDataValue =info.metaData.getString(metaDataKey);
        return metaDataValue;
    }




    /**
     * 2:在application应用<meta-data>元素。
             xml代码段:
             <application...>
             <meta-data android:value="hello my application" android:name="data_Name"></meta-data>
             </application>
     */
    public static String getApplicationMetaData(Context context,String metaDataKey){
        ApplicationInfo appInfo = null;
        try {
            appInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        String metaDataValue = appInfo.metaData.getString(metaDataKey);
        return metaDataValue;
    }




    /**
     * 3:在service应用<meta-data>元素。
             xml代码段:
             <service android:name="MetaDataService">
             <meta-data android:value="hello my service" android:name="data_Name"></meta-data>
             </service>
     */
    /**
     *
     * @param context
     * @param metaDataKey
     * @param clazz Service.class
     * @return
     */
    public static String getServiceMetaData(Context context, String metaDataKey, Class clazz){
        ComponentName cn = new ComponentName(context, clazz);
        ServiceInfo info = null;
        try {
            info = context.getPackageManager().getServiceInfo(cn, PackageManager.GET_META_DATA);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        String metaDataValue = info.metaData.getString(metaDataKey);
        return metaDataValue;
    }


    /**
     * 4: 在receiver应用<meta-data>元素。
             xml代码段:
             <receiver android:name="MetaDataReceiver">
                 <meta-data android:value="hello my receiver" android:name="data_Name"></meta-data>
                 <intent-filter>
                    <action android:name="android.intent.action.PHONE_STATE"></action>
                 </intent-filter>
             </receiver>
     */
    /**
     *
     * @param context
     * @param metaDataKey
     * @param clazz Receiver.class
     * @return
     */
    public static String getReceiverMetaData(Context context, String metaDataKey,Class clazz){
        ComponentName cn = new ComponentName(context, clazz);
        ActivityInfo info = null;
        try {
            info = context.getPackageManager().getReceiverInfo(cn, PackageManager.GET_META_DATA);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        String metaDataValue = info.metaData.getString(metaDataKey);
        return metaDataValue;
    }
}
0 0
原创粉丝点击