我正在尝试使用从相机和图库接收的结果数据设置图像视图。
我有4个ImageView,因此根据所选的图像视图请求代码更改...并将其分配给此捕获和图库变量。
private void picselect(int capture, int gallery) {
final CharSequence[] items = {"Take Photo", "Choose from Library",
"Cancel"};
a=capture;
b=gallery;
AlertDialog.Builder builder = new AlertDialog.Builder(
EditProfile.this);
builder.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int item) {
if (items[item].equals("Take Photo")) {
Calendar cal = Calendar.getInstance();
File file = new File(Environment.getExternalStorageDirectory(),
(cal.getTimeInMillis() + ".jpg"));
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
} else {
file.delete();
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
uricam = Uri.fromFile(file);
Intent takePicture = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
Log.d("shanOutput", String.valueOf(uricam));
takePicture.putExtra(MediaStore.EXTRA_OUTPUT, uricam);
startActivityForResult(takePicture,a);
} else if (items[item].equals("Choose from Library")) {
Intent photoPic = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(photoPic,b);
} else if (items[item].equals("Cancel")) {
dialog.dismiss();
}
}
});
builder.show();
}
private String getRealPathFromURI(Uri contentURI) {
String result;
Cursor cursor = getContentResolver().query(contentURI, null,
null, null, null);
if (cursor == null) {
result = contentURI.getPath();
} else {
cursor.moveToFirst();
int idx = cursor
.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
result = cursor.getString(idx);
cursor.close();
}
return result;
}
这是我在onActivityResult
中编写的代码 if (resultCode == RESULT_OK) {
if(imageReturnedIntent!=null){
Uri selectedImage = imageReturnedIntent.getData();
if(selectedImage!=null){
profileImage.setImageURI(selectedImage);}
sendImageToServer( String.valueOf(getRealPathFromURI(selectedImage)),1);
Log.d("shanImage", String.valueOf(getRealPathFromURI(selectedImage)));
}
}
从Gallery接收图片工作正常,但该部分返回null。我的代码中缺少什么。有人可以指导我完成这个模块。
答案 0 :(得分:0)
ACTION_IMAGE_CAPTURE
未通过Uri
传递给Intent
返回onActivityResult()
。
由于您使用的是EXTRA_OUTPUT
,因此您知道图片的位置:放在EXTRA_OUTPUT
的位置。所以,看看你的形象。
This sample application演示了EXTRA_OUTPUT
的使用。特别是,它使用FileProvider
,因为一旦Uri.fromFile()
升至24或更高,您就无法在Android 7.0及更高版本的设备上使用targetSdkVersion
。