2016-07-09 9 views
1

私はいくつかの情報を収集し、ユーザーがAndroidのIntentフレームワークを使って情報を共有できるアプリを持っています。 putExtra(Intent.EXTRA_TEXT, report)を使用して、reportStringです:Android:ファイル/添付ファイルとしてシンプルテキストを共有する

はこれまでのところ、それはプレーンテキストとしてレポートを共有しています。

ただし、報告書をファイルとして共有したいので、本文ではなく電子メールの添付ファイルとして簡単に共有できます。

その目的のために実際のファイルを作成する必要がありますか?私がそうするならば、それは他のアプリが読むことができる場所になければなりません。send binary contentで説明されています。

私はByteArrayOutputStreamを提供することができるAPIを期待していましたので、何か不足している可能性があります。具体的には、共有アプリに任意のストレージへのアクセス許可を強制しないでください。

答えて

1

FileProviderを使用して、一般にアクセスできないファイルを共有します。短いチュートリアルについては、Setting Up File Sharingをご覧ください。

メールを添付ファイルとして送信するのはちょっと難しいですが、タイプとしてtext/plainを使用することはできません。これは、データがEXTRA_TEXTで提供されていることを意味するためです。しかし、この余分なテキストは添付ファイルではなく電子メール本文になります。動作するはずです何

は以下の通りです:

Uri fileUri = FileProvider.getUriForFile(context, "org.example.provider.authority", reportFile); 

Intent shareIntent = new Intent(Intent.ACTION_SEND); 
shareIntent.setType("*/*"); 
shareIntent.putExtra(Intent.EXTRA_STREAM, fileUri); 

startActivity(Intent.createChooser(shareIntent, null)); 

ます。また、レポートファイルのためのFileProvider.getType()戻りtext/plainことを確認する必要があります。これを達成する最も簡単な方法は、ファイル拡張子として.txtを使用し、FileProviderが自動的に正しいことを行うことです。

関連する問題