【发布时间】:2015-04-07 05:59:38
【问题描述】:
我想让用户从相机捕获图像并上传到服务器。所以,我需要一个来自捕获照片的图像文件。
我搜索了很多解决方案,但都没有奏效。
我尝试了以下操作:
Intent camera_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (camera_intent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivityForResult(camera_intent, 1);
}
在 onActivityResult 中:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent dataIntent) {
super.onActivityResult(requestCode, resultCode, dataIntent);
if (resultCode == Activity.RESULT_OK) {
if (requestCode == 1) {
Bundle dataBundle = dataIntent.getExtras();
Bitmap imageBitmap = (Bitmap) dataBundle.get("data");
img_profile.setImageBitmap(imageBitmap); //getting thumbnail and setting to preview image
try{
Uri selectedImageUri = dataIntent.getData();
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = getActivity().getContentResolver().query(selectedImageUri, projection, null, null,null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String filePath = cursor.getString(column_index);
profilePicFile = new File(filePath);
cursor.close();
}
catch (Exception e){
e.printStackTrace();
}
但我得到了 nullPinterException 说Uri is null。我在网上尝试了几乎所有的解决方案,但没有奏效。任何人都可以对此有任何解决方案吗?
【问题讨论】:
-
@MrNice 你好,你能在回答中解释而不是在评论中解释吗?
-
你不会像这样得到捕获图像的
Uri,你必须在调用startActivityForResult(camera_intent, 1)时传递一个图像路径,然后获取该图像路径。 -
@Sharpedge 你能解释一下吗?
标签: java android android-camera android-contentprovider android-cursor