Я прочитал все подобные посты в отношении отправки вложения из внутренней памяти с помощью приложения GMAIL.Я реализовал предложение поставщика контента и до сих пор не могу получить вложение для фактической отправки с использованием GMAIL.
При передаче намерения все выглядит так, как будто оно работает, файл просто удаляется при отправке, а получатель не видит вложений.Этот код отлично работает на родном почтовом приложении Android.
Любые предложения или комментарии приветствуются.
Манифест Android:
<provider
android:authorities="com.myapp.fileprovider"
android:name="android.support.v4.content.FileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider>
file_paths.xml:
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="/data/user/0/com.myapp/files" path="."/>
</paths>
java:
ShareButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
File fileToSend = new File("");
File dir = getFilesDir();
File[] subFiles = dir.listFiles();
if (subFiles != null) {
for (File file : subFiles) {
if (file.getName().equals(curveChosen)) {
fileToSend = file;
}
}
}
File Path = new File(view.getContext().getFilesDir(),"");
File newFile = new File(Path,fileToSend.getName());
Uri contentUri = FileProvider.getUriForFile(view.getContext(),"com.myapp.fileprovider", newFile);
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
sendIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_STREAM, contentUri);
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Email Subject");
sendIntent.putExtra(Intent.EXTRA_TEXT,"Email Text");
startActivity(Intent.createChooser(sendIntent,"Select Email Application"));
}
});