Прикрепите внутренний текстовый файл к Gmail - PullRequest
1 голос
/ 09 июля 2020

Я разрабатываю приложение 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...