2016-05-16 7 views
2

Ich habe eine App in Produktion und in den letzten 24 Stunden habe ich etwa 50 Abstürze von einem einzigen Benutzer (3-4 pro Stunde) erhalten.ActivityNotFoundException: Keine Aktivität gefunden, um Soppicious Verhalten zu behandeln

Fabric markiert den Gerätetyp als "sdk" und die OS-Version ist immer 4.1.1.

Dies ist der Stacktrace:

Fatal Exception: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=market://details?id=com.google.android.gms&pcampaignid=gcore_8487000--- flg=0x80000 pkg=com.android.vending } 
    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545) 
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416) 
    at android.app.Activity.startActivityForResult(Activity.java:3351) 
    at android.app.Activity.startActivityForResult(Activity.java:3312) 
    at android.support.v4.app.FragmentActivity.startActivityForResult(SourceFile:843) 
    at android.app.Activity.startActivity(Activity.java:3522) 
    at android.app.Activity.startActivity(Activity.java:3490) 
    at com.google.android.gms.dynamic.zza$5.onClick(Unknown Source) 
    at android.view.View.performClick(View.java:4084) 
    at android.view.View$PerformClick.run(View.java:16966) 
    at android.os.Handler.handleCallback(Handler.java:615) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4745) 
    at java.lang.reflect.Method.invokeNative(Method.java) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
    at dalvik.system.NativeStart.main(NativeStart.java) 

Es gibt keine Zeichen meiner Paketname ist, sieht aus wie die App eine interne Absicht zu öffnen versucht, von denen ich keine Kontrolle haben.

Könnte das ein Benutzer/Bot ohne Google Play Store sein?

Antwort

3

Okay, was passiert, ist, dass das Gerät, auf dem Ihre App abstürzt, keine App enthält, um eine implizite Absicht zu verarbeiten, die von Ihrer App gesendet wird.

Dies bedeutet, dass Sie irgendwo in Ihrem Code eine implizite Absicht mit einer View-Aktion gesendet haben. Wenn dies auf einem Gerät ausgeführt wird, das keine Aktivität zum Auflösen einer Ansichtsabsicht enthält, stürzt es ab. Sie sollten immer überprüfen, ob eine von Ihrem Code gesendete Absicht von anderen Apps auf dem Gerät behandelt werden kann, bevor Sie die Aktivität starten. Etwas wie:

Intent sendIntent = new Intent(); 
sendIntent.setAction(Intent.ACTION_SEND); 
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage); 
sendIntent.setType("text/plain"); 

// Verify that the intent will resolve to an activity 
if (sendIntent.resolveActivity(getPackageManager()) != null) { 
    startActivity(sendIntent); 
} 

Wie Sie im obigen Code zu sehen, wird die resolveActivity() -Methode vor dem Start der Aktivität aufgerufen wird. Wenn Android keine Apps findet, die Ihre Absicht handhaben können, würde es null zurückgeben und Sie können dann vielleicht eine andere Bedingung setzen und diese Situation anmutig behandeln. Was ich aus den Protokollen entnehme, ist, dass Sie vielleicht eine Absicht gesendet haben, mit ACTION_VIEW, um vielleicht einen Gegenstand aus Ihrer App in einer anderen App zu sehen, die das System als fähig findet.

Quelle: https://developer.android.com/guide/components/intents-filters.html

+0

@ 1911z, kindly Markierung als angenommen, wenn es funktioniert .... –