【问题标题】:How to get File Uri from file path? (Scoped Storage)如何从文件路径中获取文件 Uri? (范围存储)
【发布时间】:2021-07-25 12:59:14
【问题描述】:

我想编辑存储在我知道的某个路径的文本文件。我只想要该文件路径的 MediaStore Uri,以便我可以使用 MediaStore.createWriteRequest() 创建写入请求。我该怎么做?

【问题讨论】:

  • 这与作用域存储有什么关系?

标签: java android kotlin scoped-storage


【解决方案1】:

这个对我有用

Uri.fromFile(File(filepath))

【讨论】:

  • 我已经尝试过了,它会抛出 IllegalArgumentException: All requested items must be referenced by specific ID,这是因为 Uri 不是 MediaStore Uri afaik
【解决方案2】:

这是您可以在高于 API 28 的设备和其他设备上检查权限的方法。

public static boolean checkPermission() {
    if (Build.VERSION.SDK_INT > 28 || hasAll(context, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
        return true;
    } else if(hasAll(context, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE){
        return true;
    }
}
    
public static boolean hasAll(@NonNull Context context, String... permissions) {
    return Build.VERSION.SDK_INT < Build.VERSION_CODES.M ||
    Stream.of(permissions).allMatch(permission -> ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多