PackageManager死亡 - DeadObjectException - 小包事务失败

6

我有一个非常简单的函数,如下所示:

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;
    }
}

有时候在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)
    ...

有什么想法为什么会发生这种情况吗?我认为只有在应用程序安装/卸载的同时才会发生这种情况,但我有一个用户可以重复这个过程,并且总是出现这个异常。

我有类似的问题。你有什么解决方案吗? - KamDroid
我也遇到了同样的问题。你们找到解决方法了吗? - Yasiru Nayanajith
2个回答

0

在此之后重新启动您的手机;

  1. 清理项目
  2. 重新构建项目
  3. 编译项目

0

我遇到了同样的问题,但只在Android 6上出现。我正在尝试查看是否添加PackageManager.GET_META_DATA标志有所帮助。这个类似问题的评论中建议这样做: GetPackageInfo results in DeadObjectException


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接