3

私のアプリケーションは、 Excelスプレッドシートデータ( JExcell APIによって作成された)をエクスポートする便利な方法として、intentメソッドを使用してユーザーに電子メールを送信します。

このファイルは、SDカードのrecordsというフォルダに含まれています。

私が送信しようとしているファイルは、measurments.xlsと呼ばれています。

送信する前に、ファイルの存在をコードでテストしました。メールコンポーザーに添付ファイルが表示されますが、メールを送受信すると添付ファイルが表示されません。

ただし、Excelファイルをpng画像に置き換えると添付ファイルが届きます。それで、何が得られますか?

以下は、私が電子メールを送信するために使用するコードです。これは、クラス内でそれ自体がパラメータ化された静的メソッドにすぎません。

    public static  void sendEmailWithAttachment(Context ctx, String to,String subject, String message, String fileAndLocation)
    {
        Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
        emailIntent.setType("text/plain");
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {to}); 

        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,  subject); 
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,  message); 


          File file = new File(fileAndLocation);
         //  File file = getFileStreamPath();
           if (file.exists())
           {
               Log.v("Farmgraze", "Email file_exists!" );
           }
           else
           {
               Log.v("Farmgraze", "Email file does not exist!" );
           }


        Log.v("FarmGraze", "SEND EMAIL FileUri=" + Uri.parse("file:/"+ fileAndLocation));
        emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:/"+  fileAndLocation));

        ctx.startActivity(Intent.createChooser(emailIntent, "Send mail..."));
    }//end method

では、xlsファイルを受信するには何をする必要がありますか?メソッドのコードの2行目のmimeタイプを変更しますか?もしそうなら、何をしますか。役立つアドバイスをいただければ幸いです。

読んでくれてありがとう。

A.
4

2 に答える 2

7

この質問に締めくくりを追加するだけで、解決策が見つかりました。

問題は、URI に送信されるファイル パス文字列に 3 つのスラッシュが必要なことでした。

次のように:

file:///sdcard/somefolder/some_file.xls.

また、Excel ドキュメントの場合、次のようにタイプを設定する必要があります。

emailIntent.setType("application/excel");

したがって、問題は 2 つの側面からなるものでした。このスレッドを介して 3 つのスラッシュの解決策を認識していましたが、うまくいかなかったため、問題は別の場所にあると考えました。

また、サポートされているすべての MIME タイプを一覧表示しているこの Web ページを介して、正しい MIME タイプに気付きました。他の読者にとって非常に役立つかもしれません。

だから、今は解決された私の小さな問題を読んで興味を持ってくれてありがとう。

于 2012-05-09T19:18:18.710 に答える
0

問題はあなたのmimeタイプにあるのではないかと思います。これを試して:

MimeTypeMap mime = MimeTypeMap.getSingleton();     
String mimeTypeForXLSFile = mime.getMimeTypeFromExtension(".xls");

emailIntent.setType(mimeTypeForXLSFile);
于 2012-05-08T16:19:11.793 に答える