美文网首页
获取manifest清单文件的meta-data数据(转载)

获取manifest清单文件的meta-data数据(转载)

作者: Jowney | 来源:发表于2018-06-14 09:33 被阅读6次

如果本文有帮到你请给原作者点赞

在AndroidManifest.xml中,<meta-data>元素可以作为子元素,被包含在<activity>、<application> 、<service>和<receiver>元素中,不同的父元素,在应用时读取的方法也不同。

一、在Activity应用<meta-data>元素。

xml代码段:

   <activity...>

       <meta-data android:name="data_Name" android:value="hello my activity"></meta-data>

    </activity>

java代码段:

   ActivityInfo info=this.getPackageManager()
                          .getActivityInfo(getComponentName(),
                          PackageManager.GET_META_DATA);

    String msg =info.metaData.getString("data_Name");

    Log.d(TAG, " msg == " + msg );

如果有复杂的数据要跟组件关联,还可以把数据作为资源来保存,并使用resource属性,把相关的资源ID通知给组件。
xml代码段:

<activity ...>  
    .....  
    <meta-data android:name="resource_id"  
          android:resource="@string/ice" />  
</activity>  

java代码段:

 ActivityInfo activityInfo = getPackageManager().getActivityInfo(getComponentName(),  
            PackageManager.GET_META_DATA);  
    // 获取到的是 @string/ice 对应的资源id值  
    int value = activityInfo.metaData.getInt("resource_id");  
    Log.d("Activity Tag", "resource_id : " + value);  // Activity Tag﹕ resource_id : 2131361808  

二、在application应用<meta-data>元素。

xml代码段:

  <application...>

       <meta-data android:value="hello my application" android:name="data_Name"></meta-data>

   </application>

java代码段:

    ApplicationInfo appInfo = this.getPackageManager()

                                  .getApplicationInfo(getPackageName(),

                          PackageManager.GET_META_DATA);

    String msg=appInfo.metaData.getString("data_Name");

    Log.d(TAG, " msg == " + msg );

三、在service应用<meta-data>元素。

xml代码段:

   <service android:name="MetaDataService">

      <meta-data android:value="hello my service" android:name="data_Name"></meta-data>

   </service>

java代码段:

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

   ServiceInfo info=this.getPackageManager()

                        .getServiceInfo(cn, PackageManager.GET_META_DATA);

    String msg=info.metaData.getString("data_Name");

    Log.d(TAG, " msg == " + msg );

四、在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>

** java代码段:**

ComponentName cn=new ComponentName(context, MetaDataReceiver.class);

ActivityInfo info=context.getPackageManager()

                         .getReceiverInfo(cn, PackageManager.GET_META_DATA);

String msg=info.metaData.getString("data_Name");

Log.d(TAG, " msg == " + msg );

相关文章

网友评论

      本文标题:获取manifest清单文件的meta-data数据(转载)

      本文链接:https://www.haomeiwen.com/subject/tceeeftx.html