标签: android-sdcard

在SD卡上存储android应用程序数据

有没有办法将Android应用程序数据存储在SD卡而不是内部存储器中?我知道如何将应用程序sqlite数据库从内部存储器传输到SDCard,但是如果内部存储器首先变满了怎么办?每个人如何处理这个?

android memory-management android-sdcard

30
推荐指数
4
解决办法
9万
查看次数

如何访问/存储/模拟/ 0 /

我编写了一个代码来录制音频并将其保存到文件位置下方.

private String getFilename() {
    String filepath = Environment.getExternalStorageDirectory().getPath();
    File file = new File(filepath, AUDIO_RECORDER_FOLDER);
    if (!file.exists()) {
        file.mkdirs();
    }
    return (file.getAbsolutePath() + "/" + System.currentTimeMillis() + file_exts[currentFormat]);
}
Run Code Online (Sandbox Code Playgroud)

在Logcat中,它为我提供了一个文件位置

/storage/emulated/0/AudioRecorder/1436854479696.mp4

我无法在SD卡上找到此文件位置.如何访问该位置?

android android-sdcard android-file

27
推荐指数
4
解决办法
27万
查看次数

如何使用新的Lollipop API访问所有SD卡?

背景

从Lollipop开始,应用程序可以访问真正的SD卡(在Kitkat上无法访问之后,并且在之前的版本中尚未获得官方支持),正如我在此处所述.

问题

因为看到支持SD卡的Lollipop设备变得非常罕见,并且因为模拟器实际上没有能力(或者它?)来模拟SD卡支持,所以我花了很长时间来测试它.

无论如何,似乎不是使用普通的File类来访问SD卡(一旦获得了它的许可),你需要使用Uris来使用它,使用DocumentFile.

这限制了对正常路径的访问,因为我找不到将Uris转换为路径的方法,反之亦然(加上它非常烦人).这也意味着我不知道如何检查当前的SD卡是否可访问,因此我不知道何时要求用户允许读取/写入(或向他们).

我试过的

目前,这就是我获取所有SD卡的路径:

  /**
   * returns a list of all available sd cards paths, or null if not found.
   *
   * @param includePrimaryExternalStorage set to true if you wish to also include the path of the primary external storage
   */
  @TargetApi(Build.VERSION_CODES.HONEYCOMB)
  public static List<String> getExternalStoragePaths(final Context context,final boolean includePrimaryExternalStorage)
    {
    final File primaryExternalStorageDirectory=Environment.getExternalStorageDirectory();
    final List<String> result=new ArrayList<>();
    final File[] externalCacheDirs=ContextCompat.getExternalCacheDirs(context);
    if(externalCacheDirs==null||externalCacheDirs.length==0)
      return result;
    if(externalCacheDirs.length==1)
      {
      if(externalCacheDirs[0]==null)
        return result;
      final String storageState=EnvironmentCompat.getStorageState(externalCacheDirs[0]);
      if(!Environment.MEDIA_MOUNTED.equals(storageState))
        return …
Run Code Online (Sandbox Code Playgroud)

android uri file android-sdcard documentfile

25
推荐指数
1
解决办法
5898
查看次数

24
推荐指数
2
解决办法
4万
查看次数

将Logcat保存到Android设备中的文本文件

我在Android设备中运行应用程序时发现了一些崩溃,这在模拟器中没有显示.所以我需要将Logcat保存在设备内存或SD卡的文本文件中.你能建议我这样做的好方法吗?

java eclipse android logcat android-sdcard

24
推荐指数
5
解决办法
5万
查看次数

从android中的sdcard读取特定文件

如何从SD卡读取特定文件.我已经通过DDMS在sdcard中推送文件,我试图通过这种方式阅读它,但这给了我一个例外.任何人都可以告诉我如何准确指出该文件?

我的代码就是这个.

String path = Environment.getExternalStorageDirectory().getAbsolutePath();
FileInputStream iStream =  new FileInputStream(path);
Run Code Online (Sandbox Code Playgroud)

android file android-sdcard

22
推荐指数
1
解决办法
4万
查看次数

检查SD卡是否存在,布尔值始终为真

在我的启动画面中,我想检查手机是否有SD卡.布尔语句位于:

    Boolean isSDPresent = android.os.Environment.getExternalStorageState()
            .equals(android.os.Environment.MEDIA_MOUNTED );
Run Code Online (Sandbox Code Playgroud)

所以,如果我的手机插槽中有SDCard,这个布尔值将返回true,到目前为止一直很好.当我从设置菜单转到"卸载SDCard"并删除SDCard,然后杀死应用程序并再次启动它时,布尔值也将为真.

如果我启动Astro File Manager后卸载并删除SD卡,我仍然可以访问/mnt/sdcard路径,为什么?

我怎样才能做到这一点?

提前致谢!

编辑

使用以下代码进行测试:

File path = Environment.getExternalStorageDirectory(); 
String pathS = path.getPath();
Run Code Online (Sandbox Code Playgroud)

当SDCard在插槽中时,pathS包含mnt/sdcard,但当我删除SDCard时pathS仍然是/mnt/sdcard......

android splash-screen android-sdcard

21
推荐指数
1
解决办法
1万
查看次数

将SD卡文件夹中的文件复制到另一个SD卡文件夹中

是否可以将sdcard中存在的文件夹复制到以编程方式呈现相同SD卡的另一个文件夹?

如果是这样,怎么办?

directory android copy android-sdcard android-file

20
推荐指数
3
解决办法
4万
查看次数

将原始文件复制到SDCard?

我的文件res/raw夹里有一些音频文件.出于某些原因,我想将这些文件复制到我的SDCard当我的应用程序启动时.

我怎么能这样做?有人指导我吗?

android file-copying android-sdcard

19
推荐指数
2
解决办法
2万
查看次数

尝试保存图像时,MediaStore.Images.Media.insertImage返回null

我正在使用自定义视图,并且我正在使用画布,用户可以在其中绘制任何内容,之后我想将该图像保存在SD卡中,但是无法做到这一点.不知道发生了什么.

else if(view.getId()==R.id.save_btn){
            //save drawing
            AlertDialog.Builder saveDialog = new AlertDialog.Builder(this);
            saveDialog.setTitle("Save drawing");
            saveDialog.setMessage("Save drawing to device Gallery?");
            saveDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener(){
                private FileOutputStream fOut;

                public void onClick(DialogInterface dialog, int which){
                    //save drawing
                    drawView.setDrawingCacheEnabled(true);

                    //attempt to save
                    String imgSaved = MediaStore.Images.Media.insertImage(
                            getContentResolver(), drawView.getDrawingCache(),
                            UUID.randomUUID().toString()+".png", "drawing");
                    //feedback
                    if(imgSaved!=null){
                        Toast savedToast = Toast.makeText(getApplicationContext(), 
                                "Drawing saved to Gallery!", Toast.LENGTH_SHORT);
                        savedToast.show();
                    }
                    else{
                        Toast unsavedToast = Toast.makeText(getApplicationContext(), 
                                "Oops! Image could not be saved.", Toast.LENGTH_SHORT);
                        unsavedToast.show();
                    }
                    drawView.destroyDrawingCache();
                }
            });
            saveDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){
                public void onClick(DialogInterface dialog, …
Run Code Online (Sandbox Code Playgroud)

android canvas mediastore android-sdcard

19
推荐指数
2
解决办法
1万
查看次数