여러 3rd Party 라이브러리를 사용하면 AndroidManifest.xml
에 meta-data
를 추가하라는 항목이 가끔씩 나옵니다.
추가는 쉽지만, 실제 Android Java 파일에서 어떻게 값을 취득하는가에 대해서 간단하게 설명을 적겠습니다.
Fabric
을 사용하는 경우 아래와 같이 메타 데이터를 사용하고 있습니다.
<meta-data
android:name="io.fabric.ApiKey"
android:value="<!-- Key Value -->" />
위의 값을 취득하기 위해서는 아래와 같이 진행하시면 됩니다.
ApplicationInfo
를 취득packageName
과 flag
정보 입력. flag 값은 GET_META_DATA
를 이용metaData
값을 취득metaData
가 null 이 아닌 경우, 실제 원하는 meta-data 의 name 을 이용해서 값을 취득public static String getApiKeyFromManifest(Context context) {
String apiKey = null;
try {
String e = context.getPackageName();
ApplicationInfo ai = context
.getPackageManager()
.getApplicationInfo(e, PackageManager.GET_META_DATA);
Bundle bundle = ai.metaData;
if(bundle != null) {
apiKey = bundle.getString("io.fabric.ApiKey");
}
} catch (Exception var6) {
Log.d(Furious.LOG_TAG, "Caught non-fatal exception while retrieving apiKey: " + var6);
}
return apiKey;
}
public abstract ApplicationInfo getApplicationInfo (String packageName, int flags)
Retrieve all of the information we know about a particular package/application.
Throws PackageManager.NameNotFoundException if an application with the given package name cannot be found on the system.
Parameters
Returns
ApplicationInfo Returns ApplicationInfo object containing information about the package. If flag GET_UNINSTALLED_PACKAGES is set and if the package is not found in the list of installed applications, the application information is retrieved from the list of uninstalled applications(which includes installed applications as well as applications with data directory ie applications which had been deleted with DONT_DELETE_DATA
flag set).
Throws
PackageManager.NameNotFoundException
See Also
comments powered by Disqus
Subscribe to this blog via RSS.
LazyColumn/Row에서 동일한 Key를 사용하면 크래시가 발생하는 이유
Posted on 30 Nov 2024