我在"Intent(Inent.ACTION_VIEW)"(Android Kotlin)上遇到了麻烦,我已经搜索了整个互联网,但没有找到更新的解决方案.

看起来有点简单,在我的代码中,我有这样一行代码:

private fun openFilePicker() {
        filePickerLauncher.launch("*/*")
    }
private val filePickerLauncher = registerForActivityResult(ActivityResultContracts.GetContent()) { uri ->
        if (uri != null) {
            val filePath = uri.path
            if (filePath != null) {
                pdfPath = filePath
            }
        }
    }

因此,在 Select 任何文件后,我的变量"pdfPath"有一个字符串,指向我刚刚 Select 的文件的路径,如:

pdfPath = /document/primary:ExampleFolder/Example.pdf

有没有办法打开这个有路径的文件?

OBS:文件位于手机内部.这可能是任何人在电话上,我只需要一种方法来打开一个特定的文件基于"pdfPath"的值

推荐答案

所以,在 Select 了任何文件之后

您的代码不绑定到文件.

我的变量"pdfPath"有一个指向我刚才 Select 的文件路径的字符串,如下所示:

不,不是的.它包含任意一系列字符.Uri中的path不要求是文件系统路径.值得注意的是,您的路径不是文件系统路径.

有没有办法打开这个有路径的文件?

go 掉path个.使用Uri,将其传递到您的ACTION_VIEW Intent,例如:

        if (uri != null) {
            startActivity(Intent(Intent.ACTION_VIEW, uri))
        }

该文件位于手机内部

不一定.它可能在任何地方.ActivityResultContracts.GetContent不限于文件系统.

Java相关问答推荐

Spring安全实现多个SQL表身份验证

更新我们的一个文物后出现了严重的符号引用错误

Android视图覆盖不阻止点击它后面的控件

Mat. n_Delete()和Mat. n_release的区别

Quarkus keycloat配置不工作.quarkus. keycloak. policy—enforcer. enable = true在. yaml表示中不工作

在Java Stream上调用collect方法出现意外结果

如何以干净的方式访问深度嵌套的对象S属性?

如何判断一个矩阵是否为有框矩阵?

AssertJ Java:多条件断言

使用Mockito进行的Junit测试失败

Spring data JPA/Hibernate根据id获取一个列值

为什么在maven中,getLast方法不适用于List?

Log4j与jdk21兼容吗?

如何以编程方式保存workBench.xmi?

持续时间--为什么在秒为负数的情况下还要做额外的工作?

接受类及其接口的Java类型(矛盾)

无法在IntStream上应用Collectors.groupingBy

";home/runner/work/中没有文件...匹配到[**/pom.xml];Maven项目的构建过程中出现错误

org.springframework.web.HttpRequestMethodNotSupportedException:请求方法';帖子';不支持

当我将鼠标悬停在javafxTextArea上时,如何更改鼠标光标?