Kotlin Android создает и отправляет CSV-файл

Мое приложение для Android создает файл csv и сразу же делится им, как показано ниже. Приложение запускается правильно, но файл не прикрепляется, когда я выбираю кого-либо из приложения, чтобы поделиться им. пожалуйста, помогите решить эту проблему.

class MainActivity : AppCompatActivity() {

    private val CSV_HEADER = "id,name,address,age"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        val qponFile = File.createTempFile("qpon", "csv")
        var fileWriter: FileWriter? = null

        try {
            fileWriter = FileWriter("qpon.csv")

            fileWriter.append(CSV_HEADER)
            fileWriter.append('\n')


                fileWriter.append("aaaaa")
                fileWriter.append(',')
                fileWriter.append("bbbbb")
                fileWriter.append(',')
                fileWriter.append("cccccc")
                fileWriter.append(',')
                fileWriter.append("dddddd")
                fileWriter.append('\n')

            println("Write CSV successfully!")

        } catch (e: Exception) {
            println("Writing CSV error!")
            e.printStackTrace()
        }


        val sendIntent = Intent()
        sendIntent.action = Intent.ACTION_SEND
        sendIntent.putExtra(Intent.EXTRA_STREAM, qponFile)
        sendIntent.type = "text/csv"
        startActivity(Intent.createChooser(sendIntent, "SHARE"))

    }

}

Image1, приложение запускается правильно. Kotlin Android создает и отправляет CSV-файл

Изображение2, без прикрепленных файлов Kotlin Android создает и отправляет CSV-файл

1
0
3 264
2

Ответы 2

После записи в файл необходимо закрыть его:
fileWriter.close()
и внесите это изменение:
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(qponFile))

я думаю, это работает. Я думаю, мне нужно получить разрешение, потому что это показывает, что разрешение отклонено. Не могли бы вы сообщить мне, какое разрешение мне нужно получить?

GPH 09.07.2018 17:40
<uses-permission android:name = "android.permission.INTERNET" /><uses-permission android:name = "android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name = "android.permission.READ_INTERNAL_STORAGE" /><uses-permission android:name = "android.permission.ACCESS_NETWORK_STATE" />
user8959091 09.07.2018 17:45

Это разрешения для почтового приложения. Я не думаю, что они тебе нужны

user8959091 09.07.2018 17:47

То же самое, я пробовал электронную почту и WhatsApp. это все еще не работает,

GPH 09.07.2018 17:54

Может попробовать скопировать файл на внешнее хранилище и прикрепить оттуда

user8959091 09.07.2018 17:57
val HEADER = "Name, DateTime"

var filename = "export.csv"

var path = getExternalFilesDir(null)   //get file directory for this package
//(Android/data/.../files | ... is your app package)

//create fileOut object
var fileOut = File(path, filename)

//delete any file object with path and filename that already exists
fileOut.delete()

//create a new file
fileOut.createNewFile()

//append the header and a newline
fileOut.appendText(HEADER)
fileOut.appendText("\n")
// trying to append some data into csv file
fileOut.appendText("Haider, 12/01/2021")
fileOut.appendText("\n")


val sendIntent = Intent(Intent.ACTION_SEND)
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(fileOut))
sendIntent.type = "text/csv"
startActivity(Intent.createChooser(sendIntent, "SHARE"))

Другие вопросы по теме