微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MediaFilePicker始终显示空目录

如何解决MediaFilePicker始终显示空目录

我只复制了以下代码段,并注释了路径和根路径。并始终显示空目录,如下图所示。

import React from "react"; 
const {useContext} = React

我也在下面尝试过,但是没有用

MaterialFilePicker()
    .withActivity(this)
    .withCloseMenu(true)
    //.withPath(alarmsFolder.absolutePath)
    //.withRootPath(externalStorage.absolutePath)
    .withHiddenFiles(true)
    .withFilter(Pattern.compile(".*\\.(jpg|jpeg)$"))
    .withFilterDirectories(false)
    .withTitle("Sample title")
    .withRequestCode(FILE_PICKER_REQUEST_CODE)
    .start()

enter image description here

解决方法

这是权限问题。您必须在运行时添加权限。下面的代码段无需进行任何修改即可正常运行。

private fun checkPermissionsAndOpenFilePicker() {
        val permissionGranted = ContextCompat.checkSelfPermission(
            requireContext(),Manifest.permission.READ_EXTERNAL_STORAGE
        ) == PackageManager.PERMISSION_GRANTED

        if (permissionGranted) {
            openFilePicker()
        } else {
            if (shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE)) {
                showError()
            } else {
                requestPermissions(arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE),PERMISSIONS_REQUEST_CODE)
            }
        }
    }

    private fun showError() {
        Toast.makeText(
            context,"Allow external storage reading",Toast.LENGTH_SHORT
        ).show()
    }

    override fun onRequestPermissionsResult(
        requestCode: Int,permissions: Array<String>,grantResults: IntArray
    ) {
        if (requestCode == PERMISSIONS_REQUEST_CODE) {
            if (grantResults.isNotEmpty() && grantResults.first() == PackageManager.PERMISSION_GRANTED) {
                openFilePicker()
            } else {
                showError()
            }
        }
    }

    private fun openFilePicker() {
        MaterialFilePicker()
            .withSupportFragment(this)
            .withRequestCode(FILE_PICKER_REQUEST_CODE)
            .withHiddenFiles(true)
            .withFilter(Pattern.compile(".*\\.(jpg)$"))
            .start()
    }

    override fun onActivityResult(requestCode: Int,resultCode: Int,data: Intent?) {
        super.onActivityResult(requestCode,resultCode,data)

        if (requestCode == FILE_PICKER_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
            data ?: throw IllegalArgumentException("data must not be null")

            val path = data.getStringExtra(FilePickerActivity.RESULT_FILE_PATH)

            if (path != null) {
                Log.d("Path (fragment): ",path)
                Toast.makeText(
                    context,"Picked file in fragment: $path",Toast.LENGTH_LONG
                ).show()
            }
        }
    }

    companion object {
        private const val PERMISSIONS_REQUEST_CODE = 0
        private const val FILE_PICKER_REQUEST_CODE = 1
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。