我知道可以编辑一个android清单组件,例如,设置启用/禁用等。我想在运行时将元值标签插入到android清单的应用程序标签中。我怎样才能直接写入android清单?
这里是我想直接写入我的应用程序的android清单中的字符串:
<meta-data android:name="my_api_key" android:value="mykey124" />
并且它必须位于应用程序标记内。
答案 0 :(得分:4)
您无法在运行时编辑清单。
如果您需要运行时解决方案,您应该尝试其他方式,例如共享偏好或某些可以保存价值的方法。
如果不只是将其放入清单,请参阅Google Play服务示例:
<application>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
.....
</application>
答案 1 :(得分:2)
我认为它已经很晚了,但会帮助其他人寻找这个答案
<强>第一强> 转到res&gt;值&gt; strings.xml并创建字符串资源
<string name="my_api_key">Your_api_key</string>
之后转到清单文件
确保要在应用程序或活动中添加此元标记 如果你想在应用程序内部添加,那么只需在应用程序标记之后开始,或者如果活动在你要编写的活动标记之后开始
<meta-data
android:name="apikey"
android:value="@string/my_api_key" />
现在终于有时间检索插入应用程序或活动中的元数据,
try {
ActivityInfo ai = getPackageManager().getActivityInfo(this.getComponentName(), PackageManager.GET_META_DATA);
Bundle bundle = ai.metaData;
if (bundle != null) {
String apiKey = bundle.getString("apikey");
Log.d(this.getClass().getSimpleName(), "apiKey = " + apiKey);
}
}
} catch (PackageManager.NameNotFoundException e) {
Utilities.log(this.getClass().getSimpleName(), "Failed to load meta-data, NameNotFound: " + e.getMessage());
} catch (NullPointerException e) {
Log.e(this.getClass().getSimpleName(), "Failed to load meta-data, NullPointer: " + e.getMessage());
}
如果您已将metatag放入应用程序中,请使用
ApplicationInfo ai = getPackageManager().getApplicationInfo(this.getPackageName(), PackageManager.GET_META_DATA);
而不是活动信息,这就是全部。