2017-03-02 2 views
0

Ich arbeite an der Android App, in der ich die SMS mit Bild mit Absicht senden muss, aber ich bekomme Ausnahme ActivityNotFoundException. In allen Geräten funktioniert gut, aber in Samsung-Geräten mit Marshmallow-Version funktioniert nicht. Hier ist mein Code.Keine Aktivität gefunden Ausnahme beim Senden von SMS nur in Samsung Marshmallow-Geräte

Intent sendIntent = new Intent("android.intent.action.SEND"); 
    sendIntent.setClassName("com.android.mms","com.android.mms.ui.ComposeMessageActivity"); 
    sendIntent.putExtra("sms_body", "Miimoji sent from your friend"); 
    sendIntent.putExtra("android.intent.extra.STREAM", Uri.parse("file://" + fileName)); 
    sendIntent.setType("vnd.android-dir/mms-sms"); 
    startActivity(sendIntent); 

Und hier ist der errorReport.

02-17 02: 32: 55,332: E/Android Runtime (11322): fatal EXCEPTION: main Februar 02-17: 32: 55,332: E/Android Runtime (11322): java.lang.RuntimeException: Kann Starten der Aktivität ComponentInfo {com.example.shareviamms/com.example.shareviamms.MainActivity}: android.content.ActivityNotFoundException: Die explizite Aktivitätsklasse konnte nicht gefunden werden {com.android.cms/com.android.cms.ui.ComposeMessageActivity}; Hast du diese Aktivität in deiner AndroidManifest.xml deklariert? 02-17 02: 32: 55.332: E/AndroidRuntime (11322): bei android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2187) 02-17 02: 32: 55.332: E/AndroidRuntime (11322): um android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2237) 02-17 02: 32: 55.332: E/AndroidRuntime (11322): bei android.app.ActivityThread.access $ 600 (ActivityThread.java:146) 02- 17 02: 32: 55.332: E/AndroidRuntime (11322): bei android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1239) 02-17 02: 32: 55.332: E/AndroidRuntime (11322): bei Android .os.Handler.dispatchMessage (Handler.java:99) Februar 02-17: 32: 55,332: E/Android Runtime (11322): bei android.os.Looper.loop (Looper.java:137) 02-17 Februar : 32: 55.332: E/AndroidRuntime (11322): bei android.app.ActivityThread.main (ActivityThread.java:5085) 02-17 02: 32: 55.332: E/AndroidRuntime (11322): at java.lang.reflect.Method.invokeNative (systemeigene Methode) 02-17 02: 32: 55.332: E/AndroidRuntime (11322): at java .lang.reflect.Method.invoke (Methode.java:511) 02-17 02: 32: 55.332: E/AndroidRuntime (11322): bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java : 793) Februar 02-17: 32: 55,332: E/Android Runtime (11322): bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:560) Februar 02-17: 32: 55,332: E/AndroidRuntime (11322): at dalvik.system.NativeStart.main (systemeigene Methode) 02-17 02: 32: 55.332: E/AndroidRuntime (11322): Verursacht von: android.content.ActivityNotFoundException: Die explizite Aktivitätsklasse konnte nicht gefunden werden {com.android.cms/com.android.mms.ui.ComposeMessageActivity}; Hast du diese Aktivität in deiner AndroidManifest.xml deklariert? Februar 02-17: 32: 55,332: E/Android Runtime (11322): bei android.app.Instrumentation.checkStartActivityResult (Instrumentation.java:1618) Februar 02-17: 32: 55,332: E/Android Runtime (11322): at android.app.Instrumentation.execStartActivity (Instrumentation.java:1417) 02-17 02: 32: 55.332: E/AndroidRuntime (11322): bei android.app.Activity.startActivityForResult (Activity.java:3370) 02-17 02: 32: 55.332: E/AndroidRuntime (11322): bei android.app.Activity.startActivityForResult (Activity.java:3331) 02-17 02: 32: 55.332: E/AndroidRuntime (11322): bei android.app. Activity.startActivity (Activity.java:3566) 02-17 02: 32: 55.332: E/AndroidRuntime (11322): um android.app.Activity.startActivity (Activity.java:3534) 02-17 02:32: 55.332: E/AndroidRuntime (11322): unter com.example.shareviamms.MainActivity.onCreate (Mai nActivity.java:20) Februar 2-17: 32: 55,332: E/Android Runtime (11322): bei android.app.Activity.performCreate (Activity.java:5104) Februar 2-17: 32: 55,332: E/Android Runtime (11322): bei android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1080) Februar 02 bis 17: 32: 55,332: E/Android Runtime (11322): bei android.app.ActivityThread.performLaunchActivity (ActivityThread.java: 2151) 02-17 02: 32: 55.332: E/AndroidRuntime (11322): ...11 weitere

+0

Geben Sie keinen Klassennamen an. Es gibt keine Garantie, dass diese "Aktivität" - oder auch nur dieses Paket - auf einem bestimmten Gerät stattfindet, wie Sie hier sehen. –

Antwort

1

Wahrscheinlich Samsung-Geräte etwas anderes verwenden als com.android.mms

Eigentlich kann man es tun, nur mit

Intent sendIntent = new Intent(Intent.ACTION_SEND); 

Anstelle von

Intent sendIntent = new Intent("android.intent.action.SEND"); 
sendIntent.setClassName("com.android.mms","com.android.mms.ui.ComposeMessageActivity"); 

In anderen Fällen können Sie android.content.ActivityNotFoundException abfangen und Samsung Standard MMS Weg verwenden.

1

Sie falsch davon ausgehen, dass com.android.mms Paket auf dem Gerät vorhanden sein muss (ganz zu schweigen Sie verpassen try/catch). So wird diese Zeile nicht auf gültige App zu zeigen garantiert:

sendIntent.setClassName("com.android.mms","com.android.mms.ui.ComposeMessageActivity"); 

und selbst wenn würde es, dann Annahme ComposeMessageActivity verfügbar sein wird für Sie auch falsch ist.

Die richtige Art und Weise Material der Entsendung ist durch SmsManager verwenden, das heißt:

SmsManager sms=SmsManager.getDefault(); 
sms.sendTextMessage(...) 
+0

Die Verwendung von 'SmsManager' ist eine völlig andere Sache und erfordert eine zusätzliche Erlaubnis. Es gibt nichts an sich Falsches oder Unpassendes beim Senden über 'Absicht'. –

+0

Ich sage nirgendwo, dass die Absicht selbst falsch ist. –

Verwandte Themen