pro*_*m85 5 android android-package-managers
我有一个非常简单的功能,如下所示:
public static boolean isAppInstalled(String packageName) {
PackageManager pm = MainApp.get().getPackageManager();
try {
pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
return true;
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
有时这会在getPackageInfo具有以下堆栈跟踪的行上崩溃:
java.lang.RuntimeException: Package manager has died
at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:151)
... code in my app => getPackageInfo line above ...
Caused by: android.os.DeadObjectException: Transaction failed on small parcel; remote process probably died
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:505)
at android.content.pm.IPackageManager$Stub$Proxy.getPackageInfo(IPackageManager.java:2151)
at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:145)
...
Run Code Online (Sandbox Code Playgroud)
任何想法为什么会发生这种情况?我认为这样的事情只有在同时安装/卸载应用程序时才会发生,但我有一个用户可以重复这个并且总是得到这个例外。