无法在MARSHAMALLOW文件选择器

时间:2016-05-03 11:02:29

标签: android pdf android-intent android-6.0-marshmallow

我正在使用我的Android应用程序上传pdf,ppt,doc等文件到服务器但在文件选择器打开的时候在marshmallow中我浏览我的Sdcard或内部存储有两个问题:
  1.它显示所有文件,如图像,视频和文档等我无法选择,但我使用意图类型作为application / pdf; appkication / ppt等,所以它应该让我选择那些文件   2.其次,当我使用外部文件管理器,如ES文件浏览器等,然后显示所有文件,如图像,视频,文档,apks,这次它让我选择任何类型的文件
  这是我的文件选择器代码

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.setType("application/pdf;application/docx;application/xlsx;application/pptx;application/pptx;application/txt");
            startActivityForResult(intent, PICK_FILE_REQUEST);  

我正在使用棉花糖,我认为它只发生在棉花糖中,因为我没有其他设备来测试此代码所以请帮助我在这里谢谢

我试过这样的

intent.setType("application/pdf|application/docx|application/xlsx|application/pptx|application/txt");

但它没有让我选择任何文件,但如果我只使用一种MIME类型,如pdf或docx然后它工作,让我选择pdf或docx,我搜索互联网,发现这种方式使用多个MIME类型,通过使用|代替 ;对于大多数用户来说,它工作正常但不适合我。

1 个答案:

答案 0 :(得分:2)

@Entity @Table(name = "persons") public class Person { @Id @Column(name = "f_id") private Long id; @Column(name = "f_name") private String name; @OneToOne(mappedBy = "person", optional = false) private Address mainAddress; } @Entity @Table(name = "addreses") public class Address { @Id @Column(name = "f_id") private Long id; @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "fk_person") private Person person; } 不采用以管道分隔的类型列表,也不采用以分号分隔的类型列表。它采用 MIME类型。

在API级别19以上的设备上,欢迎您add EXTRA_MIME_TYPES使用setType()Intent个其他MIME类型。理论上,String[]实现应该尊重这一点。在实践中,我希望很少会。 ACTION_GET_CONTENT可能更可靠,因为Android自己实现,而ACTION_OPEN_DOCUMENT依赖于app开发人员实现。

由于您的ACTION_GET_CONTENT适用于Intent(即您正在请求内容),因此可以使用ACTION_GET_CONTENT,但这样可以获得一些您无法支持的文件类型。

否则,一次只要求一种MIME类型。