为什么我的应用程序在启动照片 Intent 之后但在调用 onActivityResult() 之前崩溃?
Why does my app crash after launching photo intent, but before onActivityResult() is called?
我正在使用以下代码向用户请求图像:
Intent pickIntent = new Intent();
pickIntent.setType("image/* video/*");
pickIntent.setAction(Intent.ACTION_GET_CONTENT);
pickIntent.addCategory(Intent.CATEGORY_OPENABLE);
// child intents to allow capture image and video
Intent capturePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Intent captureVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
// set max capture size
capturePhotoIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 20971520L); //20*1024*1024=20MB
captureVideoIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 20971520L); //20*1024*1024=20MB
// present import chooser
String chooserTitle = "Import Media From...";
Intent chooserIntent = Intent.createChooser(pickIntent, chooserTitle);
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[]{capturePhotoIntent, captureVideoIntent});
startActivityForResult(chooserIntent, MEDIA_CAPTURE);
这适用于我的 Nexus 5,但在我的 Galaxy S5 上崩溃。崩溃发生在我拍照后,点击 "Save," 但在调用 onActivityResult()
之前。我也尝试通过 capturePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, mUri)
提供 URI,但发生了相同的行为。
我的代码没有堆栈跟踪,因为没有任何东西传回我的 activity; activity 刚刚崩溃。
我已经为此工作了好几天。任何建议表示赞赏。
我想通了。我的应用 运行 内存不足。我通过将 android:largeHeap="true"
添加到我的 AndroidManifest.xml 以及重新设计管理图片数据的代码来解决这个问题。
我正在使用以下代码向用户请求图像:
Intent pickIntent = new Intent();
pickIntent.setType("image/* video/*");
pickIntent.setAction(Intent.ACTION_GET_CONTENT);
pickIntent.addCategory(Intent.CATEGORY_OPENABLE);
// child intents to allow capture image and video
Intent capturePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Intent captureVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
// set max capture size
capturePhotoIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 20971520L); //20*1024*1024=20MB
captureVideoIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 20971520L); //20*1024*1024=20MB
// present import chooser
String chooserTitle = "Import Media From...";
Intent chooserIntent = Intent.createChooser(pickIntent, chooserTitle);
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[]{capturePhotoIntent, captureVideoIntent});
startActivityForResult(chooserIntent, MEDIA_CAPTURE);
这适用于我的 Nexus 5,但在我的 Galaxy S5 上崩溃。崩溃发生在我拍照后,点击 "Save," 但在调用 onActivityResult()
之前。我也尝试通过 capturePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, mUri)
提供 URI,但发生了相同的行为。
我的代码没有堆栈跟踪,因为没有任何东西传回我的 activity; activity 刚刚崩溃。
我已经为此工作了好几天。任何建议表示赞赏。
我想通了。我的应用 运行 内存不足。我通过将 android:largeHeap="true"
添加到我的 AndroidManifest.xml 以及重新设计管理图片数据的代码来解决这个问题。