2017-05-15 18 views
0

私は、電子メールで受信したリンクをクリックしてユーザに登録を確認する必要のあるアンドロイドアプリを作成しています。このため、私は希望の電子メールアプリケーションを開くためのショートカットを作成したいと思います。次のコードでGmailアプリケーションがクラッシュする:受信メールの表示/メールアプリの開封

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setType("message/rfc822"); 
startActivity(intent); 

これを解決する別の解決方法がありますか?

+0

特にGmailのみを開きますか? –

+0

ちょうど選択の動作。 1人以上のクライアントが電子メールを処理できる場合は、チューザがポップアップします。それ以外の場合は、インストールされているアプリケーションを開きます。 – Pepster

+0

添付ファイルも送っていますか?私は解決策がありますが、それは添付ファイルのために働いていません –

答えて

1

コードを訂正: MIMEタイプとしてmessage/rfc822 - それは示していません - 電子メールクライアントを表示するだけです - メッセージ/ rfc822データをサポートするものを示します。それには、電子メールクライアントではないアプリケーションが含まれる可能性があります。

によると、documentationによると、あなたの意図が電子メールアプリケーション(他のテキストメッセージやソーシャルアプリではない)によってのみ確実に処理されるようにするには、ACTION_SENDTOアクションを使用し、 "mailto:"データスキームを含めます。例:

public void composeEmail(String[] addresses, String subject) { 
    Intent intent = new Intent(Intent.ACTION_SENDTO); 
    intent.setData(Uri.parse("mailto:")); 
    intent.putExtra(Intent.EXTRA_EMAIL, addresses); 
    intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
    if (intent.resolveActivity(getPackageManager()) != null) { 
     startActivity(intent); 
    } 
} 
+0

これはメッセージコンポーザーを開始します...インバウンド電子メールリストを表示する必要があります。 – Pepster

+0

私は数年前に働いていました。最近のバージョンでいくつかの変更があるかもしれません。このSOの回答と組み合わせて上記のコードを試してみてくださいhttp://stackoverflow.com/a/3982785/3142342 –

0

この構造を使用して、電子メール送信を実行できるアプリケーション用のチューザを作成します。

 Intent mIntent = new Intent(Intent.ACTION_SEND); 
     mIntent.setType("text/html"); 
     mIntent.putExtra(...); // if you need extra just add it here 
     mIntent = Intent.createChooser(mIntent, "Select Email Application..."); 
     startActivity(mIntent); 
関連する問題