2017-03-02 1 views
0

私はインテントを使用して画像とともにSMSを送信する必要があるアンドロイドアプリで作業していますが、例外ActivityNotFoundExceptionが発生しています。すべてのデバイスでうまく動作していますが、動作していないmarshmallowバージョンのsamsungデバイスで動作します。 ここに私のコードです。Samsung MarshmallowのデバイスでのみSMSを送信するとアクティビティが見つかりません

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

ここではerrorReportです。

2月17日02:32:55.332:E/AndroidRuntime(11322):致命的な例外:メイン 2月17日02:32:55.332:E/AndroidRuntime(11322):java.lang.RuntimeException:できません。アクティビティを開始するにはComponentInfo {com.example.shareviamms/com.example.shareviamms.MainActivity}:android.content.ActivityNotFoundException:明示的なアクティビティクラス{com.android.mms/com.android.mms.ui.ComposeMessageActivity}を見つけることができません。あなたのAndroidManifest.xmlでこのアクティビティを宣言しましたか? 02-17 02:32:55.332:E/AndroidRuntime(11322):android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2187) 02-17 02:32:55.332:E/AndroidRuntime(11322):at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2237) 02-17 02:32:55.332:E/AndroidRuntime(11322):android.app.ActivityThread.access $ 600(ActivityThread.java:146) 02- 17 02:32:55.332:E/AndroidRuntime(11322):android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1239) 02-17 02:32:55.332:E/AndroidRuntime(11322):android .os.Handler.dispatchMessage(Handler.java:99) 2月17日02:32:55.332:E/AndroidRuntime(11322):android.os.Looper.loop(Looper.java:137) 2月17日02時:32:55.332:E/AndroidRuntime(11322):android.app.ActivityThread.main(ActivityThread.java:5085)/17/05 02:32:55.332:E/AndroidRuntime(11322):at java(Javaの場合)02-17 02:32:55.332:E/AndroidRuntime(11322) .lang.reflect.Method.invoke(Method.java:511) 2月17日02:32:55.332:E/AndroidRuntime(11322):com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.runで(ZygoteInit.java :793) 2月17日02:32:55.332:E/AndroidRuntime(11322):32:55.332:E com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 2月17日02時/ AndroidRuntime(11322):at dalvik.system.NativeStart.main(ネイティブメソッド) 02-17 02:32:55.332:E/AndroidRuntime(11322):原因:android.content.ActivityNotFoundException:明示的なアクティビティクラスを見つけることができません{com.android.mms/com.android.mms.ui.ComposeMessageActivity};あなたのAndroidManifest.xmlでこのアクティビティを宣言しましたか? 02-17 02:32:55.332:E/AndroidRuntime(11322):android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1618) 02-17 02:32:55.332:E/AndroidRuntime(11322):at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417) 02-17 02:32:55.332:E/AndroidRuntime(11322):android.app.Activity.startActivityForResult(Activity.java:3370) 02-17 02:32:55.332:E/AndroidRuntime(11322):android.app.Activity.startActivityForResult(Activity.java:3331) 02-17 02:32:55.332:E/AndroidRuntime(11322):android.app。 Activity.startActivity(Activity.java:3566) 2月17日02:32:55.332:E/AndroidRuntime(11322):android.app.Activity.startActivity(Activity.java:3534)で 2月17日午前2時32分。 55.332:E/AndroidRuntime(11322):com.example.shareviamms.MainActivity.onCreate(Mai nActivity.java:20) 2月17日02:32:55.332:E/AndroidRuntime(11322):32:55.332:android.app.Activity.performCreate(Activity.java:5104) 2月17日02時E/AndroidRuntime(11322):android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 02-17 02:32:55.332:E/AndroidRuntime(11322):android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2151) 02-17 02:32:55.332:E/AndroidRuntime(11322):...11 more

+0

クラス名を指定しないでください。あなたがここで見ているように、「アクティビティ」(またはそのパッケージ)が任意のデバイス上にあるという保証はありません。 –

答えて

1

実際にあなただけの

Intent sendIntent = new Intent(Intent.ACTION_SEND); 

でそれを行うことができます代わりに

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

その他の場合は、android.content.ActivityNotFoundExceptionを捕まえて、Samsung default mms wayを使用できます。

1

com.android.mmsパッケージがデバイスに存在する必要があると間違っています(try/catchが間違っているとは限りません)。したがって、このラインは、有効なアプリを指していることを保証するものではありません。

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

とあなたも間違っていることが、その後の仮定ComposeMessageActivityが利用できるようになりますでしょう場合でも。ものを送り出す

適切な方法SmsManager、すなわちを使用することです:おそらくサムスンのデバイスがcom.android.mms

よりも、何か他のものを使用し

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

'SmsManager'を使うことはまったく違うので、追加の許可が必要です。インテントを介して送信することは、本質的に間違っている、または不適切なことは何もありません。 –

+0

私は意図が間違っているとは言いません。 –

関連する問題