我正在尝试在应用中添加功能以拍照。相机活动出现了,我可以拍照并点击勾选标记以使用刚刚拍摄的照片,但应用程序从未收到它,因为从未调用onActivityResult。
以下是激活相机活动的代码:
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
REQUEST_IMAGE_CAPTURE设置为1。
从未调用的onActivityResult方法如下所示:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
...
}
该应用只有一项活动,即主要活动。 我已经在清单中尝试了不同的设置,没有运气。
答案 0 :(得分:0)
如上所述here,您必须在清单中添加此内容。
添加后:
<uses-feature android:name="android.hardware.camera"
android:required="true" />
拍摄照片并接受照片后,回调称为
答案 1 :(得分:0)
<uses-feature
android:name="android.hardware.camera"
android:required="false"/>
private Uri mCapturedImageURI;
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, System.currentTimeMillis() + "PRESCRIPTION");
mCapturedImageURI = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intentPicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intentPicture.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);
startActivityForResult(intentPicture, 1);
public String getCameraPathFromURI(Uri contentUri) {
try {
String[] proj = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} catch (Exception e) {
return "";
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1:
if (resultCode == RESULT_OK) {
if (mCapturedImageURI != null) {
realImagePath = getCameraPathFromURI(mCapturedImageURI);
}
}
break;
}