2012-05-08 17 views
3

私のアプリケーションではインテントメソッドを使用してExcelスプレッドシートデータ(JExcell APIで作成)をエクスポートする便利な方法としてユーザーに電子メールを送信します。電子メールにXLS(Excel)ファイルを添付する

ファイルは、というレコードと呼ばれるフォルダにSDカードに含まれています。

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

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

ただし、pngイメージの代わりにExcelファイルを使用すると、添付ファイルが受信されます。だから何を与える?

私は電子メールを送信するために使用するコードを以下に示します。これは、クラスによって、その自己によって単なるparamiterised静的メソッドです。

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. 
+0

送信/受信メールサーバーが特定の添付ファイルを削除していませんか?それをgmailアカウントに/から送信してみてください。私はMIMEの種類を変更することが役立つかもしれないと思うが、それはメールサーバーの可能性が高いです。 – Shellum

+0

うーん、違いがあるのか​​どうか分かりませんが、通常は 'file:/'に 'file://'という2つのスラッシュが付きます。やってみて。 – Gophermofur

+0

@Chuck Norris私はGMailのWebアプリケーションを介してファイルを私の仕事の電子メールに送ってきました。 –

答えて

5

私は解決策を見つけました。

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

のように:

1は次のようにタイプを設定する必要があるExcel文書についても
file:///sdcard/somefolder/some_file.xls. 

emailIntent.setType("application/excel"); 

だから、問題は2方面からのものでした。私はthis threadを介して3つのスラッシュの解決策を知っていたが、それは問題が他の場所にあると思って動作しませんでした。

また、this webpageによって正しいMIMEタイプが認識され、サポートされているすべてのMIMEタイプがリストされており、他の読者にとっては非常に便利です。

私の小さな問題を読んで興味を持っていただきありがとうございます。

0

あなたのMIMEタイプに問題があると思います。これを試してみてください:

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

emailIntent.setType(mimeTypeForXLSFile); 
+2

ありがとうございます。ありがとうございます。「メールを送る」ダイアログが表示され、「このアプリケーションを実行できません」というメッセージが表示されます。 –

+0

エミュレータまたは携帯電話でエミュレータで試してみるとそのメッセージが表示されますが、電話機で正常に動作します。 – Gophermofur

+0

携帯電話では、Galaxy S2とGalaxy Ace 2.3.3 –

関連する問題