MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA的onActivityResult没有被调用

6
我正在尝试使用意图 MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA 调用相机。但是,使用 StartActivityForResult 不会调用 onActivityResult 方法。
我该如何解决这个问题?

1
请提出更详细的问题,说明您想要什么以及发生了什么情况等。 - Niranj Patel
2
我想使用startActivityForResult调用MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA,以便用户可以在运行时决定是否要拍照或录像,然后在onActivityResult中我想保存图像或视频。 - Majid
1个回答

3
// 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();

    }

我在getImagePaths()函数中总是得到size = 0。即使我点击了几张照片,cursor.getCount()仍然与startPosition相同。你有任何想法为什么会发生这种情况吗? - Anirudh GP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接