我可以从android.R.attrs.versionName获取版本名吗?
我一直在玩,这是我第一次在电视上看到的。这声称显示了应用程序的版本,但我尝试了一些似乎不起作用的方法:我可以从android.R.attrs.versionName获取版本名吗?,android,attr,Android,Attr,我一直在玩,这是我第一次在电视上看到的。这声称显示了应用程序的版本,但我尝试了一些似乎不起作用的方法: 作为文本视图查看,仅显示编号: <TextView ... android:text="?android:attr/versionName"/> 还有其他想法吗?如果没有从代码或XML获取版本的方法,那么它似乎毫无用处 我知道还有其他方法可以获得版本名,我对它们不感兴趣,我只是好奇这个特定的变量,以及它的用途 但我试过一些似乎不起作用的方法 我不希望这两个都能起作用。
<TextView ...
android:text="?android:attr/versionName"/>
视图
不是清单文件。布局不是清单文件
如果没有从代码或XML获取版本的方法,那么它似乎毫无用处
它只是不用于处理视图。android.R.attr中很少有与视图相关的内容。在Android内部解析清单时,最多可以使用此值。我的猜测是,它在android.R.attr中作为其他元数据声明的副作用,正如。尝试以下方法:
TextView yourtextview =
PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_META_DATA);
yourtextview.setText(pInfo.versionName));
TextView yourtextview=
PackageInfo pInfo=getPackageManager().getPackageInfo(getPackageName(),PackageManager.GET_META_DATA);
yourtextview.setText(pInfo.versionName));
或者正如您在页面上看到的:
android:text=“?android:attr/versionName”
下面是一个可以使用的简单类。它的编码是为了处理Android SDK 28中不推荐使用的packageInfo.versionCode,并抑制不推荐使用的lint错误
public class Version {
private Activity activity;
public Version(Activity activity) {
this.activity = activity;
}
@SuppressWarnings("deprecation")
public long getCode() {
long code = 0;
try {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.P){
code = activity.
getPackageManager().getPackageInfo
(activity.getPackageName(), 0).getLongVersionCode();
} else{
code = activity.
getPackageManager().getPackageInfo
(activity.getPackageName(), 0).versionCode;
}
} catch (PackageManager.NameNotFoundException e) {
}
return code;
}
public String getName() {
String name = "";
try {
name = activity.
getPackageManager().getPackageInfo
(activity.getPackageName(), 0).versionName;
} catch (PackageManager.NameNotFoundException e) {
}
return name;
}
}
根据我的文章,我知道还有其他方法可以得到它,而链接的问题不起作用。
android:text="?android:attr/versionName"
public class Version {
private Activity activity;
public Version(Activity activity) {
this.activity = activity;
}
@SuppressWarnings("deprecation")
public long getCode() {
long code = 0;
try {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.P){
code = activity.
getPackageManager().getPackageInfo
(activity.getPackageName(), 0).getLongVersionCode();
} else{
code = activity.
getPackageManager().getPackageInfo
(activity.getPackageName(), 0).versionCode;
}
} catch (PackageManager.NameNotFoundException e) {
}
return code;
}
public String getName() {
String name = "";
try {
name = activity.
getPackageManager().getPackageInfo
(activity.getPackageName(), 0).versionName;
} catch (PackageManager.NameNotFoundException e) {
}
return name;
}
}