Android:文件输出流方法适用于Android版本5及更低版本但不适用于6及更高版本

时间:2017-08-02 13:52:31

标签: java android permissions android-6.0-marshmallow fileoutputstream

我有一个活动,它创建一个新的java对象,并执行该对象内的方法。其中一种方法使用fileoutputstream,其中包含活动中定义的文件和目录,该方法包括将一些数据写入此文件然后关闭它。我已经在版本4和5设备上进行了测试,它没有任何问题,但是当我去一个android 6/7设备时,fileoutputstream会抛出一个FileNotFoundException,声称没有这样的文件或目录,应用程序崩溃但我我很困惑,因为它确实存在(文件名/目录在不同版本之间没有变化),好像它不存在一样,早期版本的android也会抛出这个错误。

我知道用户从android 5到android 6的权限处理方式发生了变化,但我不知道如何或是否使用它来解决问题。写入外部存储的权限已经在我的Manifest文件中,文件目录包含Environment.getExternalStorageDirectory()方法,当前目标sdk为23(android版本6)。

请告知可能导致问题的原因以及解决此问题需要采取的措施。

1 个答案:

答案 0 :(得分:0)

我设法通过检查设备的sdk版本是什么以及它是否是版本23(android 6)或更高版本来解决此问题,然后我检查是否给予了相应权限的自我许可,如果不是,然后我调用ActivityCompat.requestPermissions,这解决了这个问题。