24

ここで奇妙な状況があります。

次のコードを使用して、複数の添付ファイルを含むメールを送信しようとしています。

Intent emailIntent = new Intent( android.content.Intent.ACTION_SEND_MULTIPLE );
// emailIntent.setType( "plain/text" );
emailIntent.setType( "application/octet-stream" );
...
....
emailIntent.putParcelableArrayListExtra( Intent.EXTRA_STREAM, uris );

これは正常に機能し、暗黙のインテント メカニズムにより、Gmail、Skype、メッセージングなどの多くのオプションが表示されます。

問題は、デフォルトのメール クライアントが HTC Thunderbolt に表示されないことです(ただし、HTC Incredible S を含む他のデバイスでは動作します)。

を使用して単一の添付ファイルを送信しようとするとIntent.ACTION_SEND、デフォルトのメール クライアントが表示されます。コンテンツ タイプを text/plain、appliation/octet-stream、message/rfc282 などに設定しようとしましたが、どれも機能しません。

ここで何が欠けていますか?

4

4 に答える 4

1

私は同じ問題を抱えていました.マルチパートフォームエンティティにhttp Mime Libraryを使用して修正しました.

ここにファイルへのリンクがあります。 http://hc.apache.org/httpcomponents-client-4.3.x/httpmime/apidocs/org/apache/http/entity/mime/HttpMultipart.html

于 2014-04-03T13:37:41.830 に答える
0

これは私にとってはうまく機能します。必ずメッセージタイプを指定してください。これは、Android OSがどのブロードキャストを使用するかを知る方法です。

     String email = "test@email.com";
    Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
    intent.setType("message/rfc822");
    intent.putExtra(Intent.EXTRA_EMAIL, new String[] {email}); // could have multiple address
    intent.putExtra(Intent.EXTRA_SUBJECT, "Enter your subject here");
    intent.putExtra(Intent.EXTRA_TEXT, "message text as needed");
    ArrayList<Uri> arrayUri = new ArrayList<Uri>();
    arrayUri.add(Uri.parse("file://" + paths[0]));
    arrayUri.add(Uri.parse("file://" + paths[1]));
    intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, arrayUri);
    startActivity(Intent.createChooser(intent, "Any title to show on chooser"));
于 2014-02-03T13:10:06.357 に答える
0

Thunderbolt バージョンの Sense のバグのようです。勝利のためのカスタム UI ですね。

とにかく、サンダーボルトで実際にメールを処理するアプリを調べ、デバイスがサンダーボルトであるかどうかを検出する if ステートメントを配置します。そうである場合は、インテントのターゲット クラスをそれが何であれ設定します。そうでない場合は、すでに行っていることを行います。

于 2012-07-30T17:05:28.227 に答える
0

これを試して。うまくいくと思います。

final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("plain/text");

ArrayList<Uri> uris = new ArrayList<Uri>();

String[] filePaths = new String[] {image1 Path,image2 path};
for (String file : filePaths) {
    File fileIn = new File(file);
    Uri u = Uri.fromFile(fileIn);
    uris.add(u);
}

if ( !(app_preferences.getString("email", "") == null || app_preferences.getString("email", "").equals(""))) {
    emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {app_preferences.getString("email", "")});    
}

emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject name");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Please find the attachment.");
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);

startActivity(Intent.createChooser(emailIntent, "Email:"));
于 2014-12-18T05:43:47.187 に答える