admin管理员组

文章数量:1530842

转载请注明出处:codog_main的博客

前言

  有时我们想选择文件,但是又懒得自己去写一个文件浏览器,使用安卓原生的文件选择器或引入第三方库无疑是最佳选择,因为写自己不喜欢的东西真的非常痛苦。
  安卓开启系统原生文件浏览器的教程在网上已经烂大街了,但是很少有文章提及如何进行多选文件。我们在开启原生的文件浏览器时,默认是单选的,即点击文件立即返回uri,想实现多选只需要加入语句:
  intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
  此时就可以多选文件了(长按文件图标)。
  最近,朋友希望我的软件能加入这个功能,于是就找时间研究了一下。按照朋友的说辞,应该是有一个参数可以实现这个功能的,但是我发现网上(或者说是百度引擎),严重缺乏这方面的文章。没办法,我只能试着看看有没有相关的参数,于是在AS中敲入“Intent.MULT”,没想到还真出现了这句“Intent.EXTRA_ALLOW_MULTIPLE”,于是我放网上一查,找到了stackoverflow上的这篇提问,问题也就解决了。
  本篇文章只介绍原生文件浏览器如何实现多选,对于返回uri的解析会放到另一篇文章中进行讲解。
  对原生浏览器uri的解析异常困难,网上流传很广的方法来自国外论坛,但具体是哪个大神研究出来的也不可考究了。我翻遍了国内外论坛、github都找不到让我满意的答案,不同版本的系统返回的uri差异太大了,网上还没有一条万能公式可以解决uri解析问题,我的方法或许并不完善,但总比那些毫无灵魂的复制粘贴文要好多了,这篇文章正在准备中。

代码

  为了让没接触过的人有个总体的了解,也方便不知道如何启动原生文件浏览器的人无需再去找其他文章,下面放出完整代码。其中的getPath函数就是对uri的解析,她可以把uri转化为真实的文件路径,这部分留到另一篇文章中讲解。

MainActivity.java:

public class MainActivity extends AppCompatActivity {
   

    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //注册添加文件按钮
        findViewById(R.id.selectButton).setOnClickListener(new View.OnClickListener() {
   
            @Override<

本文标签: 文件多选浏览器功能选择器