首页 > 解决方案 > 仅在重新启动 Android 设备后才写入文件

问题描述

我正在一个需要编写.xml文件的应用程序中工作。现在文件只有在重新启动后才会被填充Android device,我不明白为什么。这是我的代码:

override fun doInBackground(vararg params: Void?): Boolean {
    val sagaCollectFolder = File(Environment.getExternalStorageDirectory(), ".sagacollect")
    if (!sagaCollectFolder.exists())
        sagaCollectFolder.mkdir()
    try {
        val file = File(
            sagaCollectFolder,
            "collect.xml"
        )
        file.createNewFile()
        val factory: DocumentBuilderFactory = DocumentBuilderFactory.newInstance()
        val builder: DocumentBuilder = factory.newDocumentBuilder()
        val doc: Document = builder.parse(InputSource(StringReader(JRPresenter.getFilledFormXml().toString())))
        // Write the parsed document to an xml file
        val transformerFactory: TransformerFactory = TransformerFactory.newInstance()
        val transformer: Transformer = transformerFactory.newTransformer()
        val source = DOMSource(doc)
        val result = StreamResult(file)
        transformer.transform(source, result)


    } catch (exception: Exception) {
        Log.e(TAG, exception.toString())
    }
    return true
}

这是我执行的地方AsyncTask

fun saveResult(index: FormIndex, answer: IAnswerData?) {
    formController.saveAnswer(index, answer)
    WriteCacheAsync().execute()
}

任何人都知道我应该在调用方法后而不是在重新启动设备后更改什么来填充文件?

干杯,

毛里西奥

标签: androidkotlin

解决方案


@blackapps 解决了我的问题:

错误的方法。因为 Windows 依赖于 Android 设备的媒体存储,并且您没有通知媒体存储有关新文件的信息。事实上,媒体存储扫描仪会在重新启动后找到您的文件。请改用设备上的文件管理器应用程序。或者用代码检查自己

使用文件管理器,我发现一切正常。非常感谢大家。


推荐阅读