在KitKat及更高版本上将Java.io.File保存到Android FileSystem

时间:2016-10-20 14:37:03

标签: android save storage-access-framework flir

我正在开发一款应用程序,可以将FLIR相机的热图像保存到手机上的SD卡上。 我正在使用Android Marshmallow,我必须使用FLIR SDK。

在FLIR SDK中是一个类“Frame”。该类有一个方法“Frame.save”,它需要一个Java.io.File来保存热图像:这来自文档:

public void save(java.io.File file,
             RenderedImage.Palette previewPalette,
             RenderedImage.ImageType previewImageType)
      throws java.io.IOException,
             java.lang.IllegalArgumentException

保存热JPEG文件,该文件具有渲染的可视预览和嵌入的热数据

当我理解正确时,在KitKat或更高版本上,我必须使用Storage Accsess Framework。所以我用它。发送意图并将Uri返回到SD卡上的已挑选文件夹。现在到了棘手的部分。这个funktion应该创建一个File并返回一个准备好“Frame.save”方法的Java.io.File。

public File getJavaFile (String Name, Uri myUri) {


      DocumentFile pickedDir = DocumentFile.fromTreeUri(context, myUri);                      // Document file aus URI
      DocumentFile DocumentFile = pickedDir.createFile("image/plain", Name + ".jpg" );

      File file = new File(DocumentFile.getUri().getPath());
      if(file.canWrite()){
          Log.d(TAG + "/getJavaFile", "File can write");
      }else {
          Log.e(TAG + "/getJavaFile", "File cannot write");
        }

      Log.d(TAG + "/getJavaFile:", "File Created:" + file.getPath());


    return file;
}

函数返回的文件不可读或不可写... 否则,当我尝试直接创建文件时,如下所示:

String root = Environment.getExternalStorageDirectory().toString();
File file = new File(root + "/saved_images");
Log.d(TAG, file.getPath());

然后系统总是给我这个模拟文件夹:

E/MainActivity: /storage/emulated/0/saved_images

所以问题是:如何获得存储在公共存储空间中的可用Java文件...感谢您的时间!

0 个答案:

没有答案