Android 11(SDK 30)自定义文件选择器库

4

我在 Android 上从文件选择器中选择文件。

SDK 29中,我能够使用自定义文件选择器,例如https://github.com/DroidNinja/Android-FilePickerhttps://github.com/AnilFurkanOkcun/UWMediaPicker-Android。然而,它们似乎不支持SDK 30(Android 11)。我别无选择,只能使用默认的文件选择器。

问题是,默认的文件选择器不支持限制所选文件的最大数量所选文件的最大文件大小

我的问题是,现在是否有适用于SDK 30的好的自定义文件选择器库?


第一个链接中的引用:“此文件选择器基于Android提供的MediaStore API。它检查MediaStore数据库中的文件条目。如果您的文件未显示在选择器中,则意味着它尚未插入到MediaStore数据库中。” 哎呀..这不是经典的文件选择器,更糟糕的是它使用了.DATA列和getrealpathfromuri。 - blackapps
原因是因为原作者不支持这些功能,所以我不得不自己去做。 - Teo
1
错误的。我刚告诉你第一个不起作用的原因了。 - blackapps
不知道。如果他们使用getrealpathfromuri,那么是的。但是文件选择器不应该使用那些东西。 - blackapps
我认为解决方案是,如果你要访问所有的文件,必须使用系统选择器而不是任何第三方库。 - Teo
显示剩余6条评论
1个回答

3
你可以使用 Simple Storage 的文件选择器,它支持作用域存储。
class MainActivity : AppCompatActivity() {

    private val storageHelper = SimpleStorageHelper(this)

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        storageHelper.onFolderSelected = { requestCode, folder ->
            // do stuff
        }
        storageHelper.onFileSelected = { requestCode, file ->
            // do stuff
        }

        btnOpenFolderPicker.setOnClickListener { storageHelper.openFolderPicker() }
        btnOpenFilePicker.setOnClickListener { storageHelper.openFilePicker() }
    }

    override fun onSaveInstanceState(outState: Bundle) {
        storageHelper.onSaveInstanceState(outState)
        super.onSaveInstanceState(outState)
    }

    override fun onRestoreInstanceState(savedInstanceState: Bundle) {
        super.onRestoreInstanceState(savedInstanceState)
        storageHelper.onRestoreInstanceState(savedInstanceState)
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接