Android中如何在EditTextPreference中获取应用版本号
在EditTextPreference中显示与build.gradle同步的应用版本信息
步骤1:配置Preference布局
在你的偏好设置xml文件中添加EditTextPreference,设置应用名称为标题,同时禁用编辑功能(版本信息无需修改):
<EditTextPreference android:key="app_version" android:title="--App Name --" android:enabled="false" />
步骤2:读取build.gradle中的版本号并赋值
在你的PreferenceFragmentCompat(或PreferenceActivity)中,通过PackageManager获取当前应用的版本信息,再将其设置到EditTextPreference中:
Kotlin 实现:
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.your_preference_file, rootKey) // 获取版本信息 val packageInfo = requireContext().packageManager.getPackageInfo(requireContext().packageName, 0) val versionName = packageInfo.versionName // 更新Preference内容 findPreference<EditTextPreference>("app_version")?.apply { text = versionName summary = "版本:$versionName" } }
Java 实现:
@Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { setPreferencesFromResource(R.xml.your_preference_file, rootKey); // 获取版本信息 try { PackageInfo packageInfo = getContext().getPackageManager().getPackageInfo(getContext().getPackageName(), 0); String versionName = packageInfo.versionName; // 更新Preference内容 EditTextPreference versionPref = findPreference("app_version"); if (versionPref != null) { versionPref.setText(versionName); versionPref.setSummary("版本:" + versionName); } } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } }
步骤3:确保build.gradle版本配置正确
在app/build.gradle的defaultConfig中维护版本号,上面的代码会自动读取这里的versionName:
android { defaultConfig { versionName "1.0" // 此处版本号会同步到Preference中 // 其他配置项... } }
这样设置后,你的EditTextPreference就会显示应用名称和与build.gradle同步的版本号,效果和示例一致,且版本信息无法编辑。
内容的提问来源于stack exchange,提问作者Kelvin
相关产品推荐
相关产品推荐

