7

アプリケーションでクリックした画像を添付ファイルとして電子メールで送信しようとしています。画像をクリックするとパスが正しく取得されますが、アプリケーションから実行時例外がスローされます..「Intent を処理するアクティビティが見つかりません」。私は自分のデバイスでこれをテストしており、gmail アカウントが構成されています。これを解決する方法がわかりません。助けてください。

これは私のコードです:

public static void sendEmail(Context context, String[] recipientList, String title, String subject, String body) {

Intent intent = new Intent(Intent.ACTION_SENDTO,    Uri.parse("mailto:someone@example.com"));
        intent.setType("plain/text");
        intent.putExtra(android.content.Intent.EXTRA_EMAIL, recipientList);
        intent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
        intent.putExtra(android.content.Intent.EXTRA_TEXT, body);
        intent.putExtra(Intent.EXTRA_STREAM, capturedImageFilePath);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);

}

そして、これはログです:

01-15 11:26:04.455: E/AndroidRuntime(9904): FATAL EXCEPTION: main
01-15 11:26:04.455: E/AndroidRuntime(9904): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO typ=plain/text flg=0x10000000 (has extras) }
01-15 11:26:04.455: E/AndroidRuntime(9904):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1512)
01-15 11:26:04.455: E/AndroidRuntime(9904):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1384)
01-15 11:26:04.455: E/AndroidRuntime(9904):     at android.app.ContextImpl.startActivity(ContextImpl.java:852)
01-15 11:26:04.455: E/AndroidRuntime(9904):     at android.content.ContextWrapper.startActivity(ContextWrapper.java:276)
01-15 11:26:04.455: E/AndroidRuntime(9904):     at com.example.attachmail.AttchmentActivity.sendEmail(AttchmentActivity.java:133)
01-15 11:26:04.455: E/AndroidRuntime(9904):     at com.example.attachmail.AttchmentActivity$2.onClick(AttchmentActivity.java:93)
4

5 に答える 5

11

同様の問題がありました。目的を持ってメールを送信する関数にパラメーターを渡しました。ただし、行を使用する必要があることに気付きました。

intent.setData(Uri.parse("mailto:"+email));

ここみたいに:

Intent intent = new Intent(Intent.ACTION_SENDTO);
                    intent.setType("message/rfc822");
                    intent.putExtra(Intent.EXTRA_EMAIL, email);
                    intent.setData(Uri.parse("mailto:"+email));
                    intent.putExtra(Intent.EXTRA_SUBJECT, emailSubject);
                    intent.putExtra(Intent.EXTRA_TEXT, emailContent);
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    intent.addFlags(Intent.FLAG_FROM_BACKGROUND);
                try {

                    startActivity(intent);
                } catch (android.content.ActivityNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    Log.d("Email error:",e.toString());
                }

エミュレータでテストする場合は、「共有」アプリが設定されていない場合に問題が発生する可能性があるため、エミュレータで設定するか、実際のデバイスでテストしてください。

于 2014-02-09T15:18:09.127 に答える
1

次のコードを試して、メールを送信してください。

                   Intent sendIntent = new Intent(Intent.ACTION_SEND);

                    sendIntent.setType("message/rfc822");
                    sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
                   sendIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse(path));

                   sendIntent.putExtra(Intent.EXTRA_TEXT, body);
                   startActivity(Intent.createChooser(sendIntent, "Email:")) 
于 2013-01-15T06:11:38.643 に答える
1

Intent.ACTION_SENDTO を Intent.ACTION_SEND に変更しました。Bluetoothのような送信の他のオプションが欲しくなかったので、送信先を書きました..しかし、それを機能させることができませんでした。そのため、最終的に送信するように変更しましたが、現在は正常に機能しています。正確に何が問題だったのかわかりません。

于 2013-01-17T06:21:58.423 に答える
0

あなたが直面している問題は、設定した MIME タイプが「プレーン/テキスト」であり、フラグが ieFLAG ACTIVITY NEW TASK に設定されているためだと思います。

ここにあなたを助けることができるものがあります。このリンクまたはこのリンクを試してください。

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
//        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, emailSignature);
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, toSenders);
        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subjectText);
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, messageText+"\n\n"+emailSignature); 

        emailIntent.setType("image/jpeg");
        File bitmapFile = new File(Environment.getExternalStorageDirectory()+
            "/"+FOLDER_NAME+"/picture.jpg");
        myUri = Uri.fromFile(bitmapFile);
        emailIntent.putExtra(Intent.EXTRA_STREAM, myUri);
于 2013-01-15T06:13:16.297 に答える
0

コードからこの行を削除するだけです

 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

& その後、もう一度やり直してください。

于 2013-01-15T06:18:26.727 に答える