外部SD卡上的wirte不起作用

时间:2017-07-08 08:48:07

标签: android

我的应用似乎没有外部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"/>

我做错了什么?

2 个答案:

答案 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(),因此请确保正确处理该方法。