问题描述
- uri字符串不能在android中缓存
-
我使用的下面的代码String fileName = "image" + "_" + title.getText().toString()+"_" + val.toString(); photo = this.createFile(fileName, ".jpg"); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo)); uriOfPhoto = Uri.fromFile(photo); startActivityForResult(intent, RESULT_CAMERA_SELECT); } } catch(Exception e) { Log.v("Error", "Can't create file to take picture!"); displayAlert("Can't create file to take picture!","SDCard Error!"); } } private File createFile(String part, String ext) throws Exception { File tempDir = new File (Environment.getExternalStorageDirectory() + "/MyFolder/Images"); if(!tempDir.exists()) { tempDir.mkdir(); } tempDir.canWrite(); return new File(tempDir, part+ext); } });
UriOfPhoto 给出提示uriString not chached in debug。它不是存储文件中的uri。如何解决这个问题呢?
authority Uri$Part$EmptyPart (id=830004244032) fragment Uri$Part$EmptyPart (id=830004245408) host "NOT CACHED" (id=830003914304) path Uri$PathPart (id=830067926736) port -2 query Uri$Part$EmptyPart (id=830004245408) scheme "file" (id=830002660688) ssp null uriString "NOT CACHED" (id=830003914304) userInfo null
解决方案
photo 的值是确定的,
photo = this.createFile(fileName, ".jpg");
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
uriOfPhoto = Uri.fromFile(photo);
为什么还在这里实例化uriOfPhoto, 有点多余。 在用到的时候在实例化
解决方案二:
String fileName = Environment.getExternalStorageDirectory() + "/MyFolder/Images" + fileName + ".jpg";
UriOfPhoto = Uri.parse(fileName);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra(MediaStore.EXTRA_OUTPUT, UriOfPhoto);
startActivityForResult(intent, RESULT_CAMERA_SELECT);
不需要创建文件来存储照片,你只需要传递 uri,它里面的照片必须是像android系统创建的文件一样,然后在 uri 中存储捕捉的图像。
时间: 2024-11-29 08:16:58