获取图像I创建访问库中的代码,请选择一个图像,裁剪图像,之后,代码调用保存文件的功能,这个功能给,EA错误:错误从画廊
at com.alexandreccarmo.beerin.user.activities.UserPerfilActivity.onSelectFromGalleryResult(UserPerfilActivity.java:396) at com.alexandreccarmo.beerin.user.activities.UserPerfilActivity.onActivityResult(UserPerfilActivity.java:238)
该错误是指这条线:
BM = MediaStore.Images.Media.getBitmap(getApplicationContext()getContentResolver(),data.getData());
这是函数:
private void onSelectFromGalleryResult(Intent data) throws IOException {
Bitmap bm=null;
if (data != null) {
bm = MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), data.getData());
Bitmap thumbnail = bm;
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
//File destination = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis() + ".jpg");
File destination = new File(Environment.getExternalStorageDirectory(), "image.jpg");
FileOutputStream fo;
try {
destination.createNewFile();
fo = new FileOutputStream(destination);
fo.write(bytes.toByteArray());
fo.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
ivImage.setImageBitmap(bm);
dialog = ProgressDialog.show(UserPerfilActivity.this, "", "Alterando a foto...", true);
}
我怎样才能解决这个问题?
这是完整的代码:
private void galleryIntent()
{
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);//
//crop
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 96);
intent.putExtra("outputY", 96);
// retrieve data on return
intent.putExtra("return-data", true);
startActivityForResult(Intent.createChooser(intent, "Select File"), SELECT_FILE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
imagePath = this.destinationUpload.getAbsolutePath();
if (resultCode == Activity.RESULT_OK) {
if (requestCode == SELECT_FILE)
try {
onSelectFromGalleryResult(data);
} catch (IOException e) {
e.printStackTrace();
}
}
}
完整的堆栈跟踪:
06-09 12:45:43.627 21600-21600/com.alexandreccarmo.beerin E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.alexandreccarmo.beerin/com.alexandreccarmo.beerin.user.activities.UserPerfilActivity}: java.lang.ClassCastException: android.graphics.Bitmap cannot be cast to android.net.Uri
at android.app.ActivityThread.deliverResults(ActivityThread.java:3205)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3248)
at android.app.ActivityThread.access$1200(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1285)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4921)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassCastException: android.graphics.Bitmap cannot be cast to android.net.Uri
at com.alexandreccarmo.beerin.user.activities.UserPerfilActivity.onSelectFromGalleryResult(UserPerfilActivity.java:396)
at com.alexandreccarmo.beerin.user.activities.UserPerfilActivity.onActivityResult(UserPerfilActivity.java:238)
at android.app.Activity.dispatchActivityResult(Activity.java:5390)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3201)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3248)
at android.app.ActivityThread.access$1200(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1285)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4921)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
at dalvik.system.NativeStart.main(Native Method)
06-09 12:50:43.662 21600-21600/com.alexandreccarmo.beerin I/Process: Sending signal. PID: 21600 SIG: 9
Android [没有'CROP'' Intent'](https://commonsware.com/blog/2013/01/23/no-android-does-not-have-crop-intent.html)。有很多[可用于Android的图像裁剪库](https://android-arsenal.com/tag/45)。请使用其中一种,而不是假设这些附加功能适用于所有设备。除此之外,请编辑您的问题并发布整个堆栈跟踪。 – CommonsWare
对不起,我不使用“com.android.camera.action.CROP”。它只是一个考验。但错误是一样的。我编辑了我的帖子。 –
请编辑您的问题并发布整个堆栈跟踪。 – CommonsWare