30

このコードを使用してデータをメールしようとしています:

email = (Button) findViewById(R.id.enail);
    email.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            Intent emailIntent = new Intent(
                    android.content.Intent.ACTION_SEND);
            emailIntent.setAction(Intent.ACTION_SEND);
            emailIntent.setType("message/rfc822");
            emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
                    new String[] { "" });
            emailIntent.putExtra(android.content.Intent.EXTRA_CC, "");
            emailIntent.putExtra(android.content.Intent.EXTRA_BCC, "");
            emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
                    "Playlist Details");
            emailIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(Detail));
            emailIntent.setType("text/html");
            startActivity(emailIntent);

        }
    });

しかし、次のエラーがスローされます。

07-17 12:31:33.438: E/AndroidRuntime(498): FATAL EXCEPTION: main
07-17 12:31:33.438: E/AndroidRuntime(498): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SEND (has extras) }
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.app.Activity.startActivityForResult(Activity.java:2817)
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.app.Activity.startActivity(Activity.java:2923)
07-17 12:31:33.438: E/AndroidRuntime(498):  at com.playlist.ViewPlayList$3.onClick(ViewPlayList.java:93)
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.view.View.performClick(View.java:2408)
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.view.View$PerformClick.run(View.java:8816)
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.os.Handler.handleCallback(Handler.java:587)
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.os.Handler.dispatchMessage(Handler.java:92)
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.os.Looper.loop(Looper.java:123)
07-17 12:31:33.438: E/AndroidRuntime(498):  at android.app.ActivityThread.main(ActivityThread.java:4627)
07-17 12:31:33.438: E/AndroidRuntime(498):  at java.lang.reflect.Method.invokeNative(Native Method)
07-17 12:31:33.438: E/AndroidRuntime(498):  at java.lang.reflect.Method.invoke(Method.java:521)
07-17 12:31:33.438: E/AndroidRuntime(498):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-17 12:31:33.438: E/AndroidRuntime(498):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-17 12:31:33.438: E/AndroidRuntime(498):  at dalvik.system.NativeStart.main(Native Method)

私を助けてください。

4

6 に答える 6

61

StartActivity次の方法でメソッドを呼び出します。

    Intent emailIntent = new Intent(
                        android.content.Intent.ACTION_SEND);
                emailIntent.setAction(Intent.ACTION_SEND);
                emailIntent.setType("message/rfc822");
                emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
                        new String[] { "" });
                emailIntent.putExtra(android.content.Intent.EXTRA_CC, "");
                emailIntent.putExtra(android.content.Intent.EXTRA_BCC, "");
                emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
                        "Playlist Details");
                emailIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(Detail));
                emailIntent.setType("text/html");

// FOLLOWING STATEMENT CHECKS WHETHER THERE IS ANY APP THAT CAN HANDLE OUR EMAIL INTENT 
startActivity(Intent.createChooser(emailIntent,
                        "Send Email Using: "));

システムが eamil アプリケーションを見つけられない場合、素敵なダイアログが表示されます。

ここに画像の説明を入力


私は古い質問に答えていることを知っていますが、誰かを助けることができるかもしれません.

于 2013-07-03T08:18:22.093 に答える
14

これを自分のデバイスでテストしたところ、コードは完全に機能しました。また、このコードをエミュレーターでもテストしたところ、クラッシュしました。問題は、OS がこれを処理できるアクティビティを見つけられなかったことACTION_SENDです。try/catchこの種のコードは、意図を処理できるアクティビティが存在するかどうかわからないため、常に で囲みます。を処理できるアプリを少なくとも 1 つインストールしてからACTION_SEND、もう一度試して、それが機能するかどうかを確認してください。

于 2012-07-17T07:52:33.920 に答える
7

メールアプリケーションをセットアップするためのメッセージをユーザーに表示するためのより良い練習のために、これを使用してみてください。

try{

// you email code here

} catch (ActivityNotFoundException e) {
// show message to user
}
于 2013-03-13T11:17:50.840 に答える
4

はい、エミュレーターで電子メールが構成されていないため、エミュレーターに問題がありました。この問題を見つけた場合は、エミュレーターで電子メールを構成してください。

アプリケーションメニューからメールを選択し、手順に従います。

于 2012-09-25T05:26:19.317 に答える
0

またintent.resolveActivity(activity.getPackageManager())、使用することができます。このメソッドは、処理対象resolveActivityが存在するかどうかをチェックします。Activityintent

Activity から呼び出すコード例:

if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
} else {
    Toast.makeText(this, "No app to send email. Please install at least one", 
    Toast.LENGTH_SHORT).show();
}

また、チェックしてください:https://medium.com/better-programming/the-imperfect-android-send-email-action-59610dfd1c2d

于 2021-01-08T20:29:06.580 に答える