Я разрабатываю приложение android, используя kotlin. Я пишу журналы приложений в текстовый файл и сохраняю их во внутреннем хранилище. Я отправил кнопку журнала для отправки журналов. когда я нажимаю кнопку отправки журнала, я отправляю сохраненный текстовый файл, открывая приложение Gmail, но всплывающее сообщение Gmail не может прикрепить файл. Здесь моя реализация поставщика файлов для отправки текстового файла через приложение Gmail
Создание файла и запись журнала, например:
fun writeLog(className: String, methodName: String, error: String) {
var OSName: String = Build.VERSION.RELEASE
var deviceName: String = Build.MANUFACTURER + " " + Build.MODEL
var time = Calendar.getInstance().time
var message =
"OS Name : $OSName, DeviceName : $deviceName, Time : $time, ClassName : $className, MethodName : $methodName, Error : $error"
val file = File("/data/data/com.deemsysinc.telemedicinecustomer/files/
", "TelemedicineCustomerLog.txt")
Log.d("Fileres ", "response " + message)
val directory = File("/data/data/com.deemsysinc.telemedicinecustomer/files/")
if (!directory.exists()) {
directory.mkdir()
}
if (!file.exists()) {
try {
file.createNewFile()
} catch (e: Error) {
Log.d("FileError ", "error " + e.toString())
}
}
try {
file.writeText(message)
} catch (e: Error) {
Log.d("FileError ", "error " + e.toString())
}
}
Отправка электронного письма
var path = FileProvider.getUriForFile(self,BuildConfig.APPLICATION_ID+".fileprovider",file)
Log.d("NewFileUriPath",""+path)
val intent = Intent(Intent.ACTION_SENDTO)
intent.data = Uri.parse("mailto:" + "Support@telemedicinecustomer.com")
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
intent.putExtra(Intent.EXTRA_STREAM,path)
if (intent.resolveActivity(self.packageManager) != null) {
self.startActivity(intent)
} else {
Toast.makeText(
self,
"You have not installed gmail app",
Toast.LENGTH_SHORT
).show()
}
xml / provider_path
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path
name="files"
path="/" />
AndroidManifest. xml
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.deemsysinc.telemedicinecustomer.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_path" />
</provider>
Это правильный способ реализации поставщика файлов для прикрепления текстового файла к Gmail?