2016-07-01 24 views
0

私のアプリケーションには、電話機にインストールされたアプリケーションを取得するコードセグメントがあります。私はgetInstalledPackages APIを使用します。私はこれが私のアプリケーションをクラッシュさせると私はjava.lang.RuntimeException: Package manager has diedを取得することがわかった。なぜgetPackageManager()。getInstalledPackages()がアプリケーションをクラッシュさせるのですか

私の質問は、それが起こった理由と、インストールされたアプリケーションをこのようにまたは他の方法で解決する方法です。

これはレポートのいずれかです。

at android.app.ApplicationPackageManager.getApplicationInfo(ApplicationPackageManager.java:224) 
at com.baidu.location.ae.a(Unknown Source) 
at com.baidu.location.LocationClient.getAccessKey(Unknown Source) 
at com.baidu.location.LocationClient.cy(Unknown Source) 
at com.baidu.location.LocationClient.do(Unknown Source) 
at com.baidu.location.LocationClient$a.handleMessage(Unknown Source) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5050) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:805) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:621) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: android.os.DeadObjectException 
at android.os.BinderProxy.transact(Native Method) 
at android.content.pm.IPackageManager$Stub$Proxy.getApplicationInfo(IPackageManager.java:1740) 
at android.app.ApplicationPackageManager.getApplicationInfo(ApplicationPackageManager.java:219) 
+0

コードスニペットを共有すると、間違ったことを理解するのに役立ちます –

+0

[AndroidパッケージマネージャがTransactionTooLargeExceptionで亡くなりました]の重複している可能性があります(http://stackoverflow.com/questions/24253976/android-package-manager-has-died -with-transactiontoolargeexception) –

答えて

0

後は、Androidにインストールされているactivities/applicationsのリストを取得するためのコードです:

final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); 
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
final List pkgAppsList = context.getPackageManager().queryIntentActivities(mainIntent, 0); 

あなたはResolveInfoへのすべての必要なデータを取得しますアプリケーションを起動します。 ResolveInfo javadochereを確認できます。

+0

あなたのコメントをありがとうが、このメソッドは明らかに同じ条件で動作しません。パッケージマネージャーが死んでいる間、私たちはすべてPackageManagerを使用しています。 –

関連する問題