FileNotFoundException open failed: XXXXXXX EPERM (Operation not permitted)的坑

Android>7.0获得外部存储设备路径建议不要使用Environment.getExternalStorageDirectory()

原因:FileNotFoundException open failed: XXXXXXX EPERM (Operation not permitted)
权限全部添加依然报错,主要因为安卓系统的权限要求非常严格
建议改成:

ContextWrapper cw = new ContextWrapper(getApplicationContext());
File directory = cw.getExternalFilesDir(Environment.DIRECTORY_MUSIC);
File file = new File(directory, "something" + ".MP3");

getExternalFilesDir()要传入一个String类型的type,该参数定义在Environment类中如下:

public static String DIRECTORY_MUSIC = "Music";
public static String DIRECTORY_ALARMS = "Alarms";
public static String DIRECTORY_NOTIFICATIONS = "Notifications";
public static String DIRECTORY_PICTURES = "Pictures";
public static String DIRECTORY_MOVIES = "Movies";
public static String DIRECTORY_DOWNLOADS = "Download";
public static String DIRECTORY_DCIM = "DCIM";
public static String DIRECTORY_DOCUMENTS = "Documents";

完美解决

你可能感兴趣的:(android,android,java)