我试图用意图 MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA 来调用相机。
然而,使用StartActivityForResult
不打电话onActivityResult
.
我该如何解决这个问题?
// get image count in media store befor start camera Start camera with chooser
public void startCameraActivity() {
Cursor cursor = loadCursor();
image_count_before = cursor.getCount();
cursor.close();
Intent cameraIntent = new Intent(
MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
cameraIntent = Intent.createChooser(cameraIntent, "Select Camera");
List<ResolveInfo> activities = getPackageManager()
.queryIntentActivities(cameraIntent, 0);
if (activities.size() > 0)
startActivityForResult(cameraIntent, CAPTURE_IMAGES_FROM_CAMERA);
else
Toast.makeText(this, "No Camera application", Toast.LENGTH_SHORT)
.show();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case CAPTURE_IMAGES_FROM_CAMERA:
exitingCamera();
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
public Cursor loadCursor() {
final String[] columns = { MediaStore.Images.Media.DATA,
MediaStore.Images.Media._ID };
final String orderBy = MediaStore.Images.Media.DATE_ADDED;
return getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null,
null, orderBy);
}
public String[] getImagePaths(Cursor cursor, int startPosition) {
int size = cursor.getCount() - startPosition;
if (size <= 0)
return null;
String[] paths = new String[size];
int dataColumnIndex = cursor
.getColumnIndex(MediaStore.Images.Media.DATA);
for (int i = startPosition; i < cursor.getCount(); i++) {
cursor.moveToPosition(i);
paths[i - startPosition] = cursor.getString(dataColumnIndex);
}
return paths;
}
private void exitingCamera() {
Cursor cursor = loadCursor();
String[] paths = getImagePaths(cursor, image_count_before);
cursor.close();
new ProcessImage(paths).execute();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)