2014-09-02 53 views
1

我想获得一个sting frome元数据标签,但我无法使用metadata.getString(),因为它返回null。所以,我使用metadata.getInt(),但我无法得到正确的值。我该怎么做? <meta-data android:name="GDT_BANNER_POST_ID" android:value="9079537218417626401"/>如何从AndroidManifest.xml获取大量的元数据标签

+0

而不是android:value =“9079537218417626401”使用android:value =“@string/your_value”和getString()将工作 – pskink 2014-09-02 07:43:54

回答

1

使用此:

ActivityInfo app = getPackageManager().getActivityInfo(this.getComponentName(), PackageManager.GET_ACTIVITIES|PackageManager.GET_META_DATA); 
Bundle bundle = ai.metaData; 
Object value = (Object)metaData.get(name); 
+0

我试过了,它没有工作。我得到了另一个号码,-1531409119 ......不是。 – 2014-09-02 07:24:27

+2

而不是android:value =“9079537218417626401”use android:value =“@ string/your_value” – pskink 2014-09-02 07:41:08

0

使用的方法,如:

private String retrieveKey(Context aContext, String aKey) { 

    // get the key from the manifest 
    final PackageManager pm = aContext.getPackageManager(); 
    try { 
     final ApplicationInfo info = pm.getApplicationInfo(aContext.getPackageName(), 
       PackageManager.GET_META_DATA); 
     if (info.metaData == null) { 
      Log.i("Key not found in manifest", aKey); 
     } else { 
      final String value = String.valueOf(info.metaData.get(aKey)); 
      if (value == null) { 
       Log.i("Key not found in manifest", aKey); 
      } else { 
       return value.trim(); 
      } 
     } 
    } catch (final PackageManager.NameNotFoundException e) { 
     Log.i("Key not found in manifest", aKey); 
    } 
    return ""; 
} 

在您的清单,添加:

<meta-data 
      android:name="MY_KEY" 
      android:value="MY_VALUES" /> 

在你的代码,只需检索它:

String myKey = retrieveKey(this, "MY_KEY"); 
+0

它不适用于很长的一段时间。 – 2014-09-02 07:31:42

+0

你有什么? – nightfixed 2014-09-02 07:38:19

+0

我得到一个像“-1531409119”这样的字符串。 – 2014-09-02 09:21:39