import android.content.Context;
import android.os.Build;
import android.os.Environment;
import java.io.File;
public class StorageUtils {
public static String getSdCardPath(Context context) {
// 首先检查外部存储是否可用
if (isExternalStorageAvailable()) {
// 如果外部存储可用,则优先使用系统提供的方法来获取外部存储路径
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
File[] externalStorageDirs = context.getExternalFilesDirs(null);
for (File file : externalStorageDirs) {
if (file != null && !file.equals(context.getExternalFilesDir(null))) {
// 返回第一个非主要外部存储路径
return file.getAbsolutePath();
}
}
}
// 如果系统提供的方法无法获取外部存储路径,则使用老的方法获取
return Environment.getExternalStorageDirectory().getAbsolutePath();
}
return null;
}
// 检查外部存储是否可用
private static boolean isExternalStorageAvailable() {
String state = Environment.getExternalStorageState();
return Environment.MEDIA_MOUNTED.equals(state);
}
}
在您的 AndroidManifest.xml 文件中添加以下权限声明:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />