2014-09-02 56 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