以下是我的start.mp4文件的sdcard路径。我能够以读取模式获取此文件,但无法在rw
模式下打开。我也给了运行时权限。它引发了一个例外:
/storage/3263-6232/piyush/Download/start.mp4: open failed: EACCES (Permission denied)
代码:
String sdCardPath = "/storage/3263-6232/piyush/Download/start.mp4";
File file = new File(sdCardPath );
try{
RandomAccessFile rfs = new RandomAccessFile(file, "rw");
rfs.seek(file.length());
rfs.close();
} catch (IOException e) {
e.printStackTrace();
}
在上面的代码中,我将sdcardpath
带到了sdcard中存在的文件中。
比之后,每当我尝试使用RandomAccessFile
在outputstream中打开该文件时,它都会FilenotFound Exception
:
/storage/3263-6232/piyush/Download/start.mp4: open failed: EACCES (Permission denied)
答案 0 :(得分:0)
你的Manifest
看起来像这样吗?
uses-permission
代码必须位于应用程序代码
<manifest>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
...
<application>
...
<activity>
...
</activity>
</application>
</manifest>
PS:如果您正在使用Post M设备进行测试,请确保在对您提交任何操作之前询问WRITE_EXTERNAL_STORAGE
权限。
答案 1 :(得分:0)
将您的存储位置更改为/ storage / 3263-6232 / Android / data / <Your package Name>
/ files将解决您的问题
Above Path仅对相关的第三方应用程序具有写入权限,在其他地方您可以读取该文件但无法写入新文件。
或者您需要应用Storage Access Framework来获取写入权限。
有关详细信息,请访问 https://developer.android.com/guide/topics/providers/document-provider.html