Java 安卓从碎片发射相机意图
我目前有一个活动,它承载多个片段,我现在是集合的第三个片段 在这个片段中,我使用了一个意图来启动相机或画廊。见代码:Java 安卓从碎片发射相机意图,java,android,eclipse,android-intent,android-fragments,Java,Android,Eclipse,Android Intent,Android Fragments,我目前有一个活动,它承载多个片段,我现在是集合的第三个片段 在这个片段中,我使用了一个意图来启动相机或画廊。见代码: public Intent getImageIntent() { // Camera. final List<Intent> cameraIntents = new ArrayList<Intent>(); final Intent captureIntent = new Intent(android.provider.Media
public Intent getImageIntent() {
// Camera.
final List<Intent> cameraIntents = new ArrayList<Intent>();
final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
final PackageManager packageManager = context.getPackageManager();
final List<ResolveInfo> listCam = packageManager.queryIntentActivities(captureIntent, 0);
for (ResolveInfo res : listCam) {
final String packageName = res.activityInfo.packageName;
final Intent intent = new Intent(captureIntent);
intent.setComponent(new ComponentName(res.activityInfo.packageName,
res.activityInfo.name));
intent.setPackage(packageName);
cameraIntents.add(intent);
}
// Filesystem.
final Intent galleryIntent = new Intent();
galleryIntent.setType("image/*");
galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
// Chooser of filesystem options.
final Intent chooserIntent = Intent.createChooser(galleryIntent, "Select Source");
// Add the camera options.
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
cameraIntents.toArray(new Parcelable[] {}));
// Calling activity should exeecute:
// startActivityForResult(chooserIntent, 1);
return chooserIntent;
}
其中,MPProductBitmap是位图全局变量,IMGPProduct是已初始化的ImageView
出于某种原因,首先:相机选项强制关闭应用程序,并从实际片段本身获取一个空指针,就像片段项再次全部为空一样。
第二:多媒体资料选项(不止一个)不会出错,但也不会显示图像。
任何帮助都将不胜感激。我已经查看了所有可能的响应,但是没有多少人从不是活动所承载的初始片段的片段中调用意图。
谢谢
编辑:
发现有时我的上下文在onActivityResult之后为空。如果有人遇到这种帮助,我们将不胜感激。谢谢
编辑:下面是onActivityResult方法,大多数情况下应该执行第一个if
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (resultCode == Activity.RESULT_OK) {
handleSmallCameraPhoto(intent);
} else {
if (requestCode == 1) {
InputStream stream = null;
if (intent == null) {
System.out.println("DATA IS NULL..");
} else {
try {
if (mProductBitmap != null) {
mProductBitmap.recycle();
}
stream = getActivity().getContentResolver().openInputStream(
intent.getData());
mProductBitmap = BitmapFactory.decodeStream(stream);
System.out.println(mProductBitmap);
System.out.println("Setting image result");
imgProduct.setImageBitmap(mProductBitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (stream != null)
try {
stream.close();
} catch (IOException e2) {
e2.printStackTrace();
}
}
}
}
}
}
您的照片保存在
PATH\u TO\u SAVE
位置
您应该在onActivityResult中执行以下操作:
File file = new File(PATH_TO_SAVE);
Bitmap bmp = BitmapFactory.decodeFile(file.getPath());
在片段中初始化上下文的位置?能否显示执行
startActivityForResult(…)
)操作的代码?@GopalRao片段中的上下文取自其活动,因此在本例中,我使用CameraImage对象,并在构建上下文时初始化上下文。@yurezcv我用该方法编辑了我的初始问题。希望这会有帮助,但不需要太多。你解决了那个问题吗?我也有同样的问题,我现在已经放弃了这个功能,稍后再讨论。我会接受这个答案,因为这似乎是我所缺少的。谢谢
File file = new File(PATH_TO_SAVE);
Bitmap bmp = BitmapFactory.decodeFile(file.getPath());