【发布时间】:2016-09-06 18:28:02
【问题描述】:
我做到了
@Override
public void onClick(View v) {
switch (v.getId()){
//если выбрали камеру - запускаем ее
case R.id.b_camera:
//uri = generateFileUri();
if (uri == null) {
Toast.makeText(getView().getContext(), getResources().getString(R.string.sdnot), Toast.LENGTH_LONG).show();
return;
}
Intent intentCamera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, uri);
//intentCamera.putExtra("return-data", true);
startActivityForResult(intentCamera, PHOTO_INTENT_REQUEST_CODE);
break;
}
}
方法 generateFileUri() 在 onCreateView() 中被调用。 行 intentCamera.putExtra("return-data", true);对我不起作用(如果在 getParceble() 的 onActivityResult 中使用“return-data”作为键)。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent imageReturned) {
switch (requestCode) {
//если результат пришел от камеры
case PHOTO_INTENT_REQUEST_CODE:
if (resultCode == getActivity().RESULT_OK) {
Log.i("HHHHHHHHHHHH", "result ok");
//извлекаем uri фотки из интента
Uri selectedImage = imageReturned.getData();
Log.i("HHHHHHHHHHHH", "getdata works!");
//создаем интент для запуска новой активити
Intent last_intent_photo = new Intent(getView().getContext(), ViewPhoto.class);
//помещаем в интент этот uri
last_intent_photo.putExtra("fotka",selectedImage);
//стартуем новую активити
startActivity(last_intent_photo);
} else if (resultCode == getActivity().RESULT_CANCELED)
Toast.makeText(getView().getContext(), "Capture cancelled", Toast.LENGTH_LONG).show();
else
Toast.makeText(getView().getContext(), "Capture failed", Toast.LENGTH_LONG).show();
break;
default: super.onActivityResult(requestCode, resultCode, imageReturned);
}
}
我看到日志“结果正常”。我认为这意味着相机做得很好。 但后来我看到:传递结果 ResultInfo{who=android:fragment:2, request=100, result=-1, data=null} 失败。怎么可能?!
好吧,我试过 Uri selectedImage = imageReturned.getExtras().getParcelable();但我没有将其放入 getParcelable(String key) 的意图。
那么,为什么结果没问题,但 data=null?
【问题讨论】:
-
请附上您如何启动相机的代码
标签: android android-intent android-camera