При прикреплении файла к Gmail я ненадолго вижу файл во вложениях, а затем получаю тост с сообщением «Невозможно прикрепить файл», а затем он исчезает. Он отлично работает с Диском, Discord и другими приложениями. Также файл остается во вложениях на эмуляторе, но когда я его отправляю, почта отправляется без вложений. У меня есть простой файл .csv, и я прикрепляю его через FileProvider.
Пробовал писать во внутреннюю память, не помогло.
val fileLocation = File(requireContext().getExternalFilesDir("data"), "data.csv")
// Saving the file into device
val streamOut =
FileOutputStream(fileLocation)
streamOut.write(myString.toByteArray())
streamOut.close()
// Exporting
val contentUri = FileProvider.getUriForFile(
requireContext(),
"mypackage.fileprovider",
fileLocation
)
val fileIntent = Intent(Intent.ACTION_SEND)
.setType("text/csv")
.putExtra(Intent.EXTRA_SUBJECT, "Data")
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
.putExtra(Intent.EXTRA_STREAM, contentUri)
val chooser = Intent.createChooser(
fileIntent,
requireContext().resources.getText(R.string.send_to)
)
chooser.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
val resInfoList: List<ResolveInfo> = requireActivity().packageManager
.queryIntentActivities(chooser, PackageManager.MATCH_DEFAULT_ONLY)
for (resolveInfo in resInfoList) {
val packageName = resolveInfo.activityInfo.packageName
requireActivity().grantUriPermission(
packageName,
contentUri,
Intent.FLAG_GRANT_WRITE_URI_PERMISSION or Intent.FLAG_GRANT_READ_URI_PERMISSION
)
}
requireActivity().startActivity(
chooser
)
Provider_paths
<paths>
<external-files-path
name="data"
path="." />
</paths>
Манифест
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="mypackage.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
No, as I'm using FileProvider these permissions are not needed
. Они действительно не нужны. Но это не имеет ничего общего с использованием поставщика файлов. Причина в том, что они не нужны для getExternalFilesDir. - person blackapps   schedule 28.06.2020.setType("text/csv")
Попробуйте установить другой тип. - person blackapps   schedule 28.06.2020