Android emulator PackageInfo versionCode和versionName在手机上为空,但在emulator上工作
我正在构建一个不会进入市场的私人应用程序。因此,我需要提取当前版本的应用程序(而不是平台)信息,并与服务器检查是否有更新。它在模拟器上工作得很好,但是当我在DroidX上安装签名的APK时,它返回null。代码如下:Android emulator PackageInfo versionCode和versionName在手机上为空,但在emulator上工作,android-emulator,android,Android Emulator,Android,我正在构建一个不会进入市场的私人应用程序。因此,我需要提取当前版本的应用程序(而不是平台)信息,并与服务器检查是否有更新。它在模拟器上工作得很好,但是当我在DroidX上安装签名的APK时,它返回null。代码如下: PackageInfo pInfo = null; try { pInfo = getPackageManager().getPackageInfo("com.rubiconproject.expenses", PackageManager
PackageInfo pInfo = null;
try {
pInfo = getPackageManager().getPackageInfo("com.rubiconproject.expenses",
PackageManager.GET_META_DATA);
} catch (NameNotFoundException e) {
return;
}
String postUrl = DbAdapter.REMOTE_DB +
"/application/active-version/platform/android/version/" +
pInfo.versionCode + "." + pInfo.versionName;
编辑:
我在下面编写了一个小得多的应用程序,它显示了我的问题(TestingActivity.java):
以及舱单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.rubiconproject.testing"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="9" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".TestingActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
其中第26行对应于:
tt.setText(pInfo.versionCode);
有人知道为什么会发生这种情况吗?您的manifest.xml是否包含android:versionCode和androd:versionName属性
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.package.name"
android:versionCode="2"
android:versionName="1.1">
<application android:icon="@drawable/icon" android:label="@string/app_name">
...
</application>
</manifest>
...
找到了答案。问题出在键盘和椅子之间。我看到null,但事实上字符串的构建不正确。试试这个Hey Kannapan,谢谢你的回复。不幸的是,我正在尝试在我的应用程序上获取版本,而不是我统计的手机版本(尽管这肯定会有帮助),第26行是tt2.setText(pInfo.versionName)代码>。如果是这种情况,则NPE是由tt2
或pInfo
为空引起的pInfo
不为空,否则您将在第24行获得NPE。因此,由于R.id.textView2
视图不存在,tt2
似乎为空。现在这些可能都没有意义了,但我想知道你的短程序是否真的犯了同样的错误。因为我看不出你的回答所说的“字符串构建不正确”。嘿,乔娜,是的。抱歉,StackOverflow n00b,我的代码块格式不正确,因此被隐藏。
tt.setText(pInfo.versionCode);
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.package.name"
android:versionCode="2"
android:versionName="1.1">
<application android:icon="@drawable/icon" android:label="@string/app_name">
...
</application>
</manifest>