java - 如何在android 11中从Uri获取真实路径
问题描述
如何在 android 10 和 android 11 中从 URI 获取真实路径。从意图数据获取 Uri,即
private val startForResult =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
if (result.resultCode == Activity.RESULT_OK) {
val uri = result.data?.data
}
}
并打算获取pdf文件
val mimeType = "application/pdf"
val intent = Intent(Intent.ACTION_GET_CONTENT)
intent.type = mimeType
intent.addCategory(Intent.CATEGORY_OPENABLE)
if (packageManager.resolveActivity(sIntent, 0) != null) {
// it is device with Samsung file manager
chooserIntent = Intent.createChooser(sIntent, "Select an PDF File")
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, arrayOf(intent))
} else {
chooserIntent = Intent.createChooser(intent, "Select an PDF File")
}
try {
chooserIntent.resolveActivity(packageManager)?.let {
// startActivityForResult(Intent.createChooser(this,"Pick MHT file"),1)
startForResult.launch(chooserIntent)
}
} catch (ex: ActivityNotFoundException) {
Toast.makeText(
applicationContext,
"No suitable File Manager was found.",
Toast.LENGTH_SHORT
).show()
}
解决方案
您可以这样做来获取数据:
val inputStream = context.contentResolver.openInputStream(uri)
但我不确定您是否可以从 uri 中获取可用的文件路径。
推荐阅读
- angular - 如何使函数返回 Observable?
- sql - 计算 ED(急诊科)就诊次数,但每 8 天只有一次
- java - Gradle reimport 不断重置我的 intellij 项目 java 级别
- java - 如何以及在哪里安装 java 7?
- javascript - 从 fetch 获取数据时使用状态变量进行 React-native
- swift - 在 Swift 中的 UserDefaults 中存储日期
- json - 在 null 上调用了方法“[]”。接收者:null 尝试调用:[](0) !我在这里做错了什么?
- mysql - MySQL - 你如何重写它以使用 ONLY_FULL_GROUP_BY
- r - Rails - 在临时表上创建和操作?
- jdbc - DB2 JDBC Windows 身份验证