当用户使用相机拍照时,我希望图像显示在ImageView中,我想将Uri保存到在线数据库中 . 我听说保存图片的Uri比保存路径更好 .
这就是我启动相机的方式:
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(getFile(getActivity())));
String a = String.valueOf(Uri.fromFile(getFile(getActivity())));
intent.putExtra("photo_uri", a);
startActivityForResult(intent, PICK_FROM_CAMERA);
哪里
private File getFile(Context context){
File sdCard = Environment.getExternalStorageDirectory();
File directory = new File (sdCard.getAbsolutePath() + "/Myapp");
if (!directory.exists()) {
directory.mkdirs();
}
String filename = "bl" + System.currentTimeMillis() + ".jpg";
File newFile = new File(directory, filename);
return newFile;
}
在onActivityResult中:
Bundle extras = data.getExtras();
String photo_uri = extras.getString("photo_uri"); //null
这始终为空 . 在发送意图之前,Uri看起来像file:// ...而不是content://当我从图库中打开图像时,这是uri . 我不知道这是不是一个问题 .
另外,我应该将路径而不是Uri保存到数据库中吗?我读到Uri在某些手机或Android版本中会很复杂 . 当我让用户从库中选择一个图像时,我将Uri保存到数据库中,所以我认为最好的方法是在这种情况下保存Uri .
我尝试了很多变化,但每次尝试传递一个带有意图的变量时我都会变为空...
1 回答
启动意图后:
在
onActivityResult
:就这样 .