2012-07-17 14 views
21

データを電子メールで送信しながら、「意思を処理するために見つかりませんでしたアクティビティ」:私はこのコードを使用してデータを郵送しようとしています

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) 

が私を助けてくださいと。

+0

必要な権限がありますか? – Abhilasha

+0

どのOSバージョンでテストしていますか、どのデバイスをテストしていますか? – overbet13

+0

と 'Details'が正確に何を含んでいますか? – overbet13

答えて

12

私のデバイスでこれをテストしたところ、コードは完全に機能していました。そして私はエミュレータでこのコードをテストし、クラッシュしました。問題は、OSがこれを処理できるアクティビティを見つけられなかったことです。ACTION_SEND。この種のコードは常にtry/catchで囲みます。これは、あなたの意図を扱うことができるそのような活動が存在するかどうかを確かめることができないためです。 ACTION_SENDを処理できるアプリを少なくとも1つインストールしてから、もう一度やり直してみてください。いずれかがこの問題を見つけた場合、それは、エミュレータ、 内の任意の電子メールを設定されていなかったため

+0

はい、試しにキャッチするのではなく、 –

+0

のエラーではありません。できるだけ多くのアクティビティをチェックして、目的を処理できるようにしてください... たとえば、 PackageManager packageManager = getActivity()。getPackageManager(); if(intent.resolveActivity(packageManager)!= null){ //それを処理できるアクティビティがあります } else //それを処理できるアクティビティはありません:) – Patric

1

はい問題は、この

は、アプリケーションメニューから電子メールを選択し、手順に従っ行うには、あなたのエミュレータで電子メールを設定してくださいエミュレータにありました。

4

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

try{ 

// you email code here 

} catch (ActivityNotFoundException e) { 
// show message to user 
} 
47

次のようにStartActivityメソッドを呼び出します。システムは、任意のeamilアプリケーションが見つからない場合は

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

、素敵なダイアログが表示されます:

enter image description here


私は答えていることを知っています古い質問ですが、おそらく誰かを助けることができます。

+0

これは、この問題に対する素晴らしい解決策です。ありがとうございました! – wblaschko

1

この例外が発生する別の微妙な原因があります。

私のアプリは2つの異なる条件でメールを送信します。 1つの条件私はTo:フィールドを設定しました - それは必要です。Intent.ACTION_SENDTO

しかし、Intent.ACTION_SENDTOは、To:が指定されていない他の条件で説明された例外を発生させます。この状態では、Intent.ACTION_SENDが必要でした。

関連する問題