2017-11-19 8 views
0

これは私の前の投稿1のフォローです。アンドロイドは、電子メールの添付ファイルを使用してパブリックストレージファイルを送信します

要約すると、私は、MyAppがインテントを使用して指定された電子メールアドレスにデータファイルを送信するようにします。私は今、このために、次のコードを持っている:

public void onClickSend(View v) { 
    Intent i = new Intent(android.content.Intent.ACTION_SEND); 
    String Email[] = { "[email protected]" }; 
    i.putExtra(android.content.Intent.EXTRA_EMAIL, Email); 
    i.putExtra(android.content.Intent.EXTRA_SUBJECT, "Report"); 
    i.setType("text/plain"); 

    File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS); 
    File f = new File(path, _tdSource.GetFileName()); 

    Uri sUri = FileProvider.getUriForFile(v.getContext(), "org.myorg.myapp.fileprovider", f); 
    i.setData(sUri); 
    i.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 

    i.putExtra(Intent.EXTRA_STREAM, sUri); 
    startActivity(i); 
} 

MyAppのためのマニフェストファイルには、次のものが含まれます。

<application 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:theme="@style/AppTheme"> 
    ... 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".SubActivity"></activity> 
    <provider 
     android:name="android.support.v4.content.FileProvider" 
     android:authorities="org.myorg.myapp.fileprovider" 
     android:grantUriPermissions="true" 
     android:exported="false"> 
     <meta-data 
      android:name="android.support.FILE_PROVIDER_PATHS" 
      android:resource="@xml/filepaths" /> 
    </provider> 
</application> 

のMyAppはFileProvider.getUriForFile()の呼び出しで例外に当たります。奇妙なことに、例外はjava.lang.reflect.InvocationTargetExceptionであり、AppCompatViewInflater.onClick()内で捕捉されます。

私は...

答えて

1
Intent intent = new Intent(Intent.ACTION_SEND); 
intent.putExtra(Intent.EXTRA_EMAIL, address); 
intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); // attachment 
intent.setType("message/rfc822"); // message content type 
startActivity(Intent.createChooser(intent, "Share via"); 
+0

を私が間違っているのか、これで行くことにしています何見当がつかないこれで問題が解決する理由を明確にするいくつかの説明を追加してください。 – ekhumoro

+0

うわー - うまくいった! FileProviderとすべてでドキュメントがなぜそれほど難しくなったのかわかりません...私が以前に持っていたことが何で間違っていたのかまだ分かりません。 –

関連する問題