我的应用似乎没有外部SD卡的写入权限。我可以从中读取,但写作只适用于内部的(sdcard0)。 当我尝试
File f = new File("/storacge/sdcard1/Test/file.mp3");
boolean b = f.delete();
然后b是false
,文件仍然存在。但我可以用MediaPlayer
播放它。
我的清单中有<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
我做错了什么?
答案 0 :(得分:1)
1)您需要要求运行时权限
2)不要假设路径是/ storage / sdcard1。这取决于设备。通过getExternalFilesDirs
请求名称答案 1 :(得分:0)
如果您使用的是Android 6.0或更高版本,则必须准确地在您需要的位置请求权限。
在您的活动中创建一个方法:
public void askForWritePermissions(){
//If android marshmellow or higher
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
//If permissions are not granted
if(ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED ){
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},2);
}
}
}
并在您需要的任何事件上调用上述方法。在用户授予访问权限或未授予对权限的访问权限后,将调用onRequestPermissionsResult(),因此请确保正确处理该方法。