プログラム上からAndroidManifest.xmlなどの設定値を参照する方法。
Activity activity = this; //例えばActivity内で実行した場合 Context context = activity; PackageManager packageManager = context.getPackageManager(); try { //アプリアイコン Drawable icon = packageManager.getApplicationIcon(context.getPackageName()); //Manifest.xmlに関連するもの PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0); String versionName = packageInfo.versionName; //Manifest.xmlのApplicationタグに関連するもの ApplicationInfo appInfo = packageManager.getApplicationInfo(context.getPackageName(), 0); //appInfo = packageInfo.applicationInfo; こういう事もできる int targetSdkVersion = appInfo.targetSdkVersion; //Applicationタグのメタデータ String meta_hoge = appInfo.metaData.getString("ほげ"); //アプリ名、普通はリソースから参照するから使わなさそう CharSequence applicationLabel = packageManager.getApplicationLabel(appInfo); //hideのため参照できない //appInfo.hasRequestedLegacyExternalStorage(); //Manifest.xmlのActivityタグとReceiverタグに関連するもの ActivityInfo activityInfo = packageManager.getActivityInfo(activity.getComponentName(), PackageManager.GET_META_DATA); boolean isFixedOrientationLandscape = (activityInfo.screenOrientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) || (activityInfo.screenOrientation == ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE) || (activityInfo.screenOrientation == ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE) || (activityInfo.screenOrientation == ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE); //Activityのメタデータ String metaData_fuga = activityInfo.metaData.getString("ふが"); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); }
各infoクラスの@hideになってるis系メソッドを使えると便利なんだけどな~