2012-03-14 7 views
7

ボタンクリックでGmailのメール送信フォームを直接開こうとしていますが、これは常にメールを送信するオプションのリストを示しています。アンドロイドでGMailを使用してメールを送信

私はGmailのフォームを開くためにこれをやっている:

  Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
      String[] recipients = new String[]{"" , "" ,}; 
      emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, recipients); 
      emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "This is my text"); 
      emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, ""); 
      emailIntent.setType("message/rfc822"); 
      startActivity(Intent.createChooser(emailIntent, "Send Email")); 

が、これはGmailのフォームを開いていません。 GMailフォームを開くために何をすればいいですか?

これを行う方法はありますか?

+1

あなたはオプションのリストを見ている理由があります。あなたの場合、これはいつもMIMEタイプ 'message/rfc822'に対して' ACTION_SEND'を扱うことができるアプリケーションのリストを作成します。 GMailを使うように明示的に指示する方法はありません。あなたは 'createChooser(...)'なしで試してみることができます。もしあなたが運が良ければ、ユーザはGMailをデフォルトのメールアプリケーションとして設定しているかもしれません。あなたが幸運であればそうです。彼らがデフォルトのメールアプリケーションを設定すると、代わりにそれを使用します。私は実際にあなたが望むことをすることが可能であるとは確信していません。確かに 'createChooser(...) 'ではありません。 – Squonk

答えて

16

使用あなたが `` Intent.createChooser(...)を使用しているので、ライン上で何か

public void sendGmail(Activity activity, String subject, String text) { 
    Intent gmailIntent = new Intent(); 
    gmailIntent.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail"); 
    gmailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject); 
    gmailIntent.putExtra(android.content.Intent.EXTRA_TEXT, text); 
    try { 
     activity.startActivity(gmailIntent); 
    } catch(ActivityNotFoundException ex) { 
     // handle error 
    } 
} 
+0

この 'activity.startActivity(gmailIntent);'行に対して 'nullポインタ例外 'を与えます。 – Pari

+0

uが現在のアクティビティオブジェクトを渡していることを確認してください。このメソッドをアクティビティクラスの中に追加し、startActivity(gmailIntent)を呼び出すこともできます。直接 – mkso

+0

これはうまく動作します。私はそれの前に 'getParent()'を渡していて、これは私のアプリケーションをクラッシュさせました。 – Pari

関連する問題