我创建一个文件夹并使用Environment.getExternalStoragePublicDirectory()
. 但它正在创建一个文件夹路径到一个名为/storage/emulated/0
. 我在 SD 卡上搜索了我的文件名,但没有。所以我确定那/storage/emulated/0
是一个放置在手机内存中的东西。但根据Android Doc,外部存储器是指 SD 卡。
例如,屏幕截图存储在 SD 卡上,我可以通过转到 Android“下载”应用程序->SD 卡->图片->屏幕截图来找到它:
这是我的代码,我创建文件夹路径的方式,然后通过附加照片的存储时间为单张照片创建唯一的文件路径:
public File getPublicDir() {
// Get the directory for the user's public pictures directory.
File file = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DCIM),"collage");
if (!file.mkdirs()) {
Log.e("PUBLIC DIRECTORY", "Directory not created");
}
return file;
}
try{
Calendar calendar= Calendar.getInstance();
SimpleDateFormat sdformat=new SimpleDateFormat("MM_dd_yyyy_HH:mm:ss");
String DateString=sdformat.format(calendar.getTime());
file=new File(getPublicDir(),"mySnapshot_"+DateString+".png");
FileOutputStream fos=new FileOutputStream(file);
Boolean success=snapshot.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
Toast.makeText(MainActivity.this,"Compress?
:"+file,Toast.LENGTH_SHORT).show();
}catch(IOException e){
e.printStackTrace();
Toast.makeText(MainActivity.this,"NOT SAVED",Toast.LENGTH_SHORT).show();
}
编辑:
我尝试String secStore = System.getenv("SECONDARY_STORAGE");
但secStore
运行应用程序时为空。这是来自这个堆栈的答案。
我尝试手动输入通向 SD 卡的文件夹地址(如上图所示):
String dir="/document/3464-6161:collage";
file=new File(dir,"mySnapshot_"+DateString+".png");
但它给了我这个错误: