【发布时间】:2021-08-17 21:58:57
【问题描述】:
(这个问题是关于 Android 11 的)
我想将崩溃日志打印到其他应用程序可以读取的文件中(具体来说,我希望能够导航到该文件并使用“文件”应用查看数据)。
我已经看过几十个这个问题的答案,但他们都有以下两个问题之一:
- 他们正在使用已弃用的
Environment.getExternalStoragePublicDirectory,或者 - 他们正在使用
getExternalFilesDir,但这会返回一个对其他应用程序不可见的目录。
请注意,我想在我的 Application 课堂上执行此操作,而不是在活动中。
根据official docs我可以将它保存为“文档”,但是那里提供的示例有问题;它是从活动中调用的。由于我试图从应用程序中调用它,所以方法 startActivityForResult 不存在。
// Request code for creating a PDF document.
const val CREATE_FILE = 1
private fun createFile(pickerInitialUri: Uri) {
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "application/pdf"
putExtra(Intent.EXTRA_TITLE, "invoice.pdf")
// Optionally, specify a URI for the directory that should be opened in
// the system file picker before your app creates the document.
putExtra(DocumentsContract.EXTRA_INITIAL_URI, pickerInitialUri)
}
startActivityForResult(intent, CREATE_FILE) // <--- This does not compile, a subclass of Application doesn't have this method avaiable...
}
【问题讨论】:
-
我还注意到,Android 文档中提供的非常有用的示例(我的问题中的链接)实际上并未显示如何将任何数据保存到文件中。
-
很抱歉。将其添加到标题中。
-
我假设您希望在没有任何用户交互的情况下保存崩溃日志,对吧?
-
(填充文本,因为 StackOverflow 逻辑)是
-
getContext(), getApplicationContext()?