如何使用 ActivityResultContracts.CreateDocument() 添加意图类型
How to add intent type by using ActivityResultContracts.CreateDocument()
我正在使用下面的代码在外部存储上创建一个文件
Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "audio/*"
putExtra(Intent.EXTRA_TITLE, fileName)
}.also {
startActivityForResult(it, CREATE_FILE)
}
由于 startActivityForResult 已弃用,我正在使用 ActivityResultContracts.CreateDocument()。但是我无法添加上面代码中显示为 type = "audio/*"
的意图类型
这是我的代码;
val createFileIntent =
registerForActivityResult(ActivityResultContracts.CreateDocument()) { uri ->
// todo
}
// usage
createFileIntent.launch(fileName)
如何添加意向类型?
根据ActivityResultContracts.CreateDocument
的文档,可以继承class来自定义Intent,例如:
class CreateSpecificTypeDocument(private val type: String) :
ActivityResultContracts.CreateDocument() {
override fun createIntent(context: Context, input: String): Intent {
return super.createIntent(context, input).setType(type)
}
}
然后为activity注册结果:
registerForActivityResult(CreateSpecificTypeDocument("audio/*")) {
// todo
}
我正在使用下面的代码在外部存储上创建一个文件
Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "audio/*"
putExtra(Intent.EXTRA_TITLE, fileName)
}.also {
startActivityForResult(it, CREATE_FILE)
}
由于 startActivityForResult 已弃用,我正在使用 ActivityResultContracts.CreateDocument()。但是我无法添加上面代码中显示为 type = "audio/*"
的意图类型这是我的代码;
val createFileIntent =
registerForActivityResult(ActivityResultContracts.CreateDocument()) { uri ->
// todo
}
// usage
createFileIntent.launch(fileName)
如何添加意向类型?
根据ActivityResultContracts.CreateDocument
的文档,可以继承class来自定义Intent,例如:
class CreateSpecificTypeDocument(private val type: String) :
ActivityResultContracts.CreateDocument() {
override fun createIntent(context: Context, input: String): Intent {
return super.createIntent(context, input).setType(type)
}
}
然后为activity注册结果:
registerForActivityResult(CreateSpecificTypeDocument("audio/*")) {
// todo
}