Android: NPE происходит при получении изображения с камеры

У меня проблема с моим Android-приложением. Я использую MediaStore.ACTION_IMAGE_CAPTURE , чтобы сделать снимок с камеры. Он работал на всех большинстве устройств, но я получил следующие аварийные ошибки на устройстве DroidX с рынка Android.

Я думаю, что imageCaptureUri не может иметь значение NULL в этом случае. Так что это не причина.

У вас есть идеи? Это ошибка прошивки?

java.lang.NullPointerException в Это работало на всех большинстве устройств, но у меня возникли следующие аварийные ошибки на устройстве DroidX ...

У меня проблема с моим Android-приложением. Я использую MediaStore.ACTION_IMAGE_CAPTURE , чтобы сделать снимок с камеры. Он работал на всех большинстве устройств, но я получил следующие аварийные ошибки на устройстве DroidX с рынка Android.

Я думаю, что imageCaptureUri не может иметь значение NULL в этом случае. Так что это не причина.

У вас есть идеи? Это ошибка прошивки?

java.lang.NullPointerException в Это работало на всех большинстве устройств, но у меня возникли следующие аварийные ошибки на устройстве DroidX ...

У меня проблема с моим Android-приложением. Я использую MediaStore.ACTION_IMAGE_CAPTURE , чтобы сделать снимок с камеры. Он работал на всех большинстве устройств, но я получил следующие аварийные ошибки на устройстве DroidX с рынка Android.

Я думаю, что imageCaptureUri не может иметь значение NULL в этом случае. Так что это не причина.

У вас есть идеи? Это ошибка прошивки?

java.lang.NullPointerException в

Я думаю, что imageCaptureUri не может иметь значение NULL в этом случае. Так что это не причина.

У вас есть идеи? Это ошибка прошивки?

java.lang.NullPointerException в

Я думаю, что imageCaptureUri не может иметь значение NULL в этом случае. Так что это не причина.

У вас есть идеи? Это ошибка прошивки?

java.lang.NullPointerException в android.content.ContentResolver.openInputStream (ContentResolver.java:286) в com.eb.android.activity.AddActivity.getBase64Receipt (AddActivity.java:193) в com.eb.android.activity.AddActivity.publishReceipt (AddActivity.java:204) в com.eb.android.activity.AddActivity.access $ 0 (AddActivity.java:203) в com.eb.android.activity.AddActivity $ 1.run (AddActivity.java:50) в java.lang.Thread.run (Thread.java:1102)


java.lang.NullPointerException в android.content.ContentResolver.openInputStream (ContentResolver.java:288) в com.eb.android.activity.AddActivity.getBase64Receipt (AddActivity.java:193) в com.eb.android.activity.AddActivity.publishReceipt (AddActivity.java:204) в com.eb.android.activity.AddActivity.access $ 0 (AddActivity.java:203) в com.eb.android.activity.AddActivity $ 1.run (AddActivity.java:50) в java.lang.Thread.run (Thread.java:1096)

Это моя реализация:

public class AddActivity extends Activity {

    public static final int TAKE_RECEIPT = 2;

    private Uri imageCaptureUri;

    private Runnable submitReceiptRunnable = new Runnable() {
        public void run() {
            publishReceipt();
        }
    };

    private ProgressDialog progressDialog;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.add);

        registerListeners();
    }

    public void onActivityResult(int reqCode, int resultCode, Intent data) {
        super.onActivityResult(reqCode, resultCode, data);

        switch (reqCode) {
            case (TAKE_RECEIPT):
                takeReceiptCallback(resultCode, data);
                break;
        }
    }

    private void registerListeners() {
        ImageView addReceiptButton = (ImageView) findViewById(R.id.AddReceiptButton);
        addReceiptButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                takePictureFromCamera();
            }
        });
    }

    private void takePictureFromCamera() {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

        imageCaptureUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "tmp_receipt_"
                + String.valueOf(System.currentTimeMillis()) + ".jpg"));

        intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageCaptureUri);
        intent.putExtra("return-data", true);

        startActivityForResult(intent, TAKE_RECEIPT);
    }

    private void takeReceiptCallback(int resultCode, Intent data) {
        if (resultCode == Activity.RESULT_OK) {
            submitReceipt();
        }
    }

    private void submitReceipt() {
        Thread thread = new Thread(null, submitReceiptRunnable);
        thread.start();
        progressDialog = ProgressDialog.show(this, "Please wait...", "Publishing receipt ...", true);
    }

    private String getBase64Receipt() {
        try {
            InputStream inputStream = getContentResolver().openInputStream(imageCaptureUri);
            byte[] bytes = CommonUtil.getBytesFromInputStream(inputStream);
            return Base64.encodeBytes(bytes);
        } catch (IOException e) {
            Log.e(TAG, e.getMessage(), e);
        }

        return null;
    }

    private void publishReceipt() {
        String receipt = getBase64Receipt();

        ...
    }
}
9
задан Rumit Patel 21 March 2018 в 12:55
поделиться