我正在使用我的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类型,通过使用|代替 ;对于大多数用户来说,它工作正常但不适合我。
答案 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类型。