AndroidManifestにmeta-dataタグを使って値を登録する事が出来ます。
他のapkから読み込んだり、設定データなどの静的データの永続化に利用出来ます。
■設定
AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<!-- 文字列 -->
<meta-data android:name="key" android:value="value"/>
<!-- 画像 -->
<meta-data android:name="smallIcon" android:resource="@drawable/comment_icon"/>
<!-- 遷移時などのActivity -->
<meta-data android:name="startActivity" android:value=".MainActivity"/>
<activity
android:name=".MainActivity"
android:label="@string/app_name">
.
.
.
</application>
※meta-dataタグはapplicationタグ直下に記載します。
■取得
//meta-dataに必要なappInfo取得
ApplicationInfo appInfo = null;
try {
appInfo = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
//文字列
String value = appInfo.metaData.getString("key");
Log.d("tag", "value: " + value);
//画像
int smallIcon = appInfo.metaData.getInt("smallIcon");
Log.d("tag", "smallIcon: " + smallIcon);
//Activity
Class startClass = null;
String applicationName = null;
try {
applicationName = getPackageManager().getApplicationLabel(getPackageManager().getApplicationInfo(getPackageName(), 0)).toString();
String activityName = appInfo.packageName + appInfo.metaData.getString("startActivity");
startClass = Class.forName(activityName);
} catch (ClassNotFoundException | PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
Intent intent = new Intent(this, startClass);
※meta-dataタグ内のresourceはgetIntすることでidを取得します