Problem mit Auflösung von Aktivität für eine beabsichtigte resolveActivityInfo()
Ich bin mit resolveActivityInfo um festzustellen, ob meine app wurde festgelegt, wie eine home launcher:
PackageManager pm = getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_HOME);
userHomePackage = intent.resolveActivityInfo(pm, 0).packageName;
userHomeActivityClass = intent.resolveActivityInfo(pm, 0).name;
currentHomeLauncherName = intent.resolveActivityInfo(pm, 0).loadLabel(pm).toString();
es funktioniert Super auf emulator und drei android-Geräte, die ich auf Händen.
Kürzlich bekam ich Fehlermeldungen von meinem Benutzer und-error-log zeigt, dass resolveActivityInfo nicht. Dies geschieht nur auf ein paar Handys läuft auf android 2.1 update 1, wie ich sehen kann. Ich habe schon viele positive Kommentare auf meine app und ein paar negative wegen diesem Problem.
Irgendwelche Tipps was falsch sein könnte?
java.lang.NullPointerException
at android.os.Parcel.readException(Parcel.java:1224)
at android.os.Parcel.readException(Parcel.java:1206)
at android.content.pm.IPackageManager$Stub$Proxy.resolveIntent(IPackageManager.java:1418)
at android.app.ApplicationContext$ApplicationPackageManager.resolveActivity(ApplicationContext.java:2046)
at android.content.Intent.resolveActivityInfo(Intent.java:3790)
at com.myapp.myappname.Launcher.setAsHomeApplicationBeforeFroyo(Launcher.java:336)
ODER
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.myappname/com.myapp.myappname.Launcher}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2497)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2513)
at android.app.ActivityThread.access$2200(ActivityThread.java:119)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1864)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4370)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.os.Parcel.readException(Parcel.java:1224)
at android.os.Parcel.readException(Parcel.java:1206)
at android.content.pm.IPackageManager$Stub$Proxy.resolveIntent(IPackageManager.java:1418)
at android.app.ApplicationContext$ApplicationPackageManager.resolveActivity(ApplicationContext.java:2046)
at android.content.Intent.resolveActivityInfo(Intent.java:3790)
at com.myapp.myappname.Launcher.showHomeChooserDialog(Launcher.java:141)
at com.myapp.myappname.Launcher.showNextActivity(Launcher.java:122)
at com.myapp.myappname.Launcher.onCreate(Launcher.java:59)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2460)
... 11 more
java.lang.NullPointerException
at android.os.Parcel.readException(Parcel.java:1224)
at android.os.Parcel.readException(Parcel.java:1206)
at android.content.pm.IPackageManager$Stub$Proxy.resolveIntent(IPackageManager.java:1418)
at android.app.ApplicationContext$ApplicationPackageManager.resolveActivity(ApplicationContext.java:2046)
at android.content.Intent.resolveActivityInfo(Intent.java:3790)
at com.myapp.myappname.Launcher.showHomeChooserDialog(Launcher.java:141)
Die Besondere Ausnahme, mit der Sie Auftritt, nicht angezeigt zu werden, aus dem code. Vielleicht ist es ein buggy modded ROM, die einige Leute verwenden.
Dank für die Antwort! Ich habe mehr Berichte jetzt ein bisschen über 30 für die letzten zwei Tage - alle kamen Sie von samsung-Handys von verschiedenen Trägern und laufen alle auf android 2.1-update1. Aber ich habe auch 5-Sterne-rate von Nutzern mit dem gleichen Handy-Modelle und läuft auf 2.1...go figure...
Dank für die Antwort! Ich habe mehr Berichte jetzt ein bisschen über 30 für die letzten zwei Tage - alle kamen Sie von samsung-Handys von verschiedenen Trägern und laufen alle auf android 2.1-update1. Aber ich habe auch 5-Sterne-rate von Nutzern mit dem gleichen Handy-Modelle und läuft auf 2.1...go figure...
InformationsquelleAutor mishkin | 2011-02-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kevin von TeslaCoil Software hier. Sorry für die Verzögerung bei der immer wieder auf Sie zurück. Dies ist, was ich verwende, um die Home-Komponente in meine apps:
resolveActivity nicht normalerweise null zurück, wie es scheint, um die Rückkehr der resolver-Aktivität, wenn es keine Standard-set. Aber auf einigen Telefonen oder etwas, das es möglicherweise null zurückgeben, nur um die Dinge interessant. Vielleicht resolveActivityInfo Anrufe resolveActivity funktioniert aber nicht mit den null-Fall richtig.
InformationsquelleAutor Kevin TeslaCoil
habe einige der Forschung mit android Quelle, und ich eher Zustimmen, jetzt mit Commonsware, dass mein code richtig ist. Ich tatsächlich neu gestaltet es 3 Wochen zu verwenden Paketmanager.resolveActivity statt Vorsatz.resolveactivity:
Es nicht helfen, so dass immer noch daran, diese Fehler gelegentlich...
Basierend auf der source-code,
ComponentName Absicht.resolveActivity (PackageManager pm)
oder
ActivityInfo Absicht.resolveActivityInfo (PackageManager pm, int flags)
Aufruf der gleichen Methode definiert, die in android.app.ContextImpl Klasse:
ResolveInfo info = pm.resolveActivity(this, PackageManager.MATCH_DEFAULT_ONLY)
und es ist folgendermaßen definiert:
also an diesem Punkt kam ich zu dem Schluss, dass ich nichts 🙁
Ich glaube nicht, sollten wir die Schuld google - dieser code funktioniert im emulator und ich habe versucht, alle Versionen der api. also muss es etwas mit produziert firmware.
Dieses Problem passiert auch auf Nexus7 :
PackageManager manager = context.getPackageManager(); List<ResolveInfo> activities = manager.queryIntentActivities(intent, 0);
InformationsquelleAutor mishkin