2017-06-30 12 views
1

私は電子メールでサービスを利用して作成したファイルを共有したいと思います。私は電子メールで私的なファイルを共有することはできませんが、それを行うにはコンテンツプロバイダを使用する方法を知っています。私はコンテンツプロバイダーが助けることができるオンラインを読むが、私はそれを動作させることはできない。 (簡単にするためにファイル作成コードをインテント作成と併合しました)"android/data"で作成されたファイルを電子メールで送信する方法は?

Intent email = new Intent(Intent.ACTION_SEND); 
    email.putExtra(Intent.EXTRA_EMAIL, new String[]{ "[email protected]"}); 
    email.putExtra(Intent.EXTRA_SUBJECT, "Nothing"); 
    email.putExtra(Intent.EXTRA_TEXT, "Nothing"); 
    email.setType("message/rfc822"); 
    Uri uri = null; 
    try { 
     File file = new File(this.getExternalFilesDir(null), "samplefile.txt"); 
     uri = FileProvider.getUriForFile(this, "lcukerd.com.android.fileprovider", file); 
     FileOutputStream osw = new FileOutputStream(file); 
     osw.write("Say something".getBytes("UTF-8")); 
     osw.close(); 

     Log.i("File Reading stuff", "success"); 

    } catch (Exception e) 
    { 
     Log.e(tag,"File creation error",e); 
    } 
    //Uri uri = FileProvider.getUriForFile(this, "lcukerd.com.android.fileprovider",); 
    //Uri uri = Uri.fromFile(getFileStreamPath("samplefile.txt")); 
    Log.d(tag,uri.toString()); 
    email.putExtra(Intent.EXTRA_STREAM,uri); 
    startActivityForResult(Intent.createChooser(email, "Choose an Email client :"),1); 

アプリを選択するオプションがありますが、何も起こりません。 Gmailアプリは開けません。

Uri uri = Uri.fromFile(getFileStreamPath("samplefile.txt"));を使用するとGmailが開きますが、「添付ファイルのアクセスが拒否されました」と表示されます。

実際には、サービスからファイルを書き込み、そのファイルを電子メールで送信したいと考えています。 Plsはそれを達成するのに役立ちます。

答えて

0

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
emailIntent.setType("*/*"); 
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {"[email protected]"}); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, 
"Test Subject"); 
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, 
"go on read the emails");  
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromfile(new File(yourtextfilepath)); 
startActivity(Intent.createChooser(emailIntent, "Send mail...")); 

は、テキストファイルのパスは、外部メモリカードからでなければならないことを確認してください、次のコードを使用します。アクションは内部メモリからファイルを受け付けません。 また、これも試してみてください。 Link 1

+0

私はファイルを外部メモリカードに入れたくありません。内部メモリカードに入れておきたい – lcukerd

+0

リンクを試しました –

+0

はい、Gmailは開きますが、そこには添付ファイルはありません。 – lcukerd

関連する問題