首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何让Environment.getExternalStoragePublicDirectory()创建一条到SD卡的路径,而不是到模拟的内部存储器/0?

如何让Environment.getExternalStoragePublicDirectory()创建一条到SD卡的路径,而不是到模拟的内部存储器/0?
EN

Stack Overflow用户
提问于 2018-07-13 22:54:15
回答 1查看 859关注 0票数 2

我创建了一个文件夹,并使用Environment.getExternalStoragePublicDirectory()在该文件夹中放置了一个文件。但它创建了一个文件夹路径,指向一个名为/storage/emulated/0的地方。我在SD卡上搜索我的文件名,但没有。所以我确定/storage/emulated/0是放在手机的内部存储器里的。但根据Android Doc的说法,外部存储器就是SD卡。

例如,屏幕截图存储在SD卡上,我可以通过Android“下载”App->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为空。这是来自this Stack answer的。

我尝试手动输入指向SD卡的文件夹地址(如上图所示):

String dir="/document/3464-6161:collage";
file=new File(dir,"mySnapshot_"+DateString+".png");

但是它给了我这个错误:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-13 23:06:29

您可以通过使用getExternalStorageDirectory()并为Manifest.permission.WRITE_EXTERNAL_STORAGE提供Request permission来访问外部SD卡

或者,您可以使用StorageManager.getStorageVolumes()来了解设备中有哪些可用卷。它将返回有关StorageVolume的信息,如SD卡和U盘。

注意:它可以从API 24获得。

使用它,您可以访问所需的文件路径。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51327880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档