2011-09-21 6 views
6

에 activityInfo 메타 데이터를 얻을 나는 메타 데이터로 저장되어있는 AndroidManifest.xml 파일에서 값을 검색 할 필요에서 onCreate 방법

onCreate 방법에서
<meta-data android:value="3" android:name="myInterestingValue" /> 

, 나는 다음과 같은 메서드를 호출 :

private Object getMetaData(String name) { 
    try { 
     ActivityInfo ai = getPackageManager().getActivityInfo(this.getComponentName(), PackageManager.GET_META_DATA); 
     Bundle metaData = ai.metaData; 
     if(metaData == null) { 
      debug("metaData is null. Unable to get meta data for " + name); 
     } 
     else { 
      Object value = (Object)metaData.get(name); 
      return value; 
     } 
    } catch (NameNotFoundException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 
에게

그러나 metaData은 항상 null입니다. onCreate 방법으로 metaData에 액세스 할 수 없습니까? 즉, 활동이 아직 완전히 초기화되지 않았습니다.

답변

22

GET_ACTIVITIESGET_META_DATA 플래그를 사용해야합니다.

ActivityInfo ai = getPackageManager() 
     .getActivityInfo(this.getComponentName(), PackageManager.GET_META_DATA); 
+1

감사합니다. 당신은 오타가 있어야합니다 : ActivityInfo app = getPackageManager(). getActivityInfo (this.getComponentName(), PackageManager.GET_ACTIVITIES | PackageManager.GET_META_DATA); – ajh158

1

당신이 관심이 있다면, android-metadata은 쉽게 안드로이드 매니페스트에서 메타 데이터를 얻을 수 있도록하는 프레임 워크입니다. 당신이 android-metadata를 사용하여 위의 메타 데이터를 얻을 것입니다 방법은 다음과 같습니다

int val = ManifestMetadata.get (context).getValue ("myInterestingValue", Integer.class); 

전체 공개 : 나는 안드로이드 - 메타 데이터의 창조자입니다.

+0

androidannotations (https://github.com/excilys/androidannotations) 프레임 워크에 병합됩니까? – mrroboaat

0

jasonj의 답변을 시도했지만 작동하지 않습니다. 매니페스트 파일에서 메타 데이터를 검색하려면 다음 코드를 가져와야합니다.

ApplicationInfo ai = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA); 
Bundle bundle = ai.metaData; 
+0

getApplicationInfo는 요소에서 메타 데이터를 가져 오는 데 사용됩니다. 요소의 메타 데이터를 얻으려면 설명 된대로 getActivityInfo를 사용해야합니다. –

관련 문제