uriString после съемки в некоторых устройствах - PullRequest
0 голосов
/ 23 мая 2018

Когда я делаю фотографию в OnePlus 3 с Android 8.0, приложение вылетает, но в моем Genymotion с Android 6.0 оно отлично работает.

Намерение камеры.

Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(takePicture, TAKE_IMAGE_REQUEST);

Как яНастраиваю onActivityResult ()

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{       
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == TAKE_IMAGE_REQUEST) {
        Bitmap photo = (Bitmap) data.getExtras().get("data");
        Uri tempUri = getImageUri(getApplicationContext(), photo);

        String path = getRealPathFromURI(tempUri);
        try {
            Img img = crearImg(path);
            if (user.isOnline()) {
                Img.uploadImage(NoteActivity.this, img);
            }
        } catch (Exception e) {}

    }

}

Надеюсь, кто-нибудь может мне помочь.

Заранее спасибо.

1 Ответ

0 голосов
/ 24 мая 2018

Возможно, добавление проверки для кода результата предотвратит сбой, но не обязательно решит проблему?

if (requestCode == TAKE_IMAGE_REQUEST && && resultCode == RESULT_OK) {
   //your code here
} else {
   //log error here to figure out the problem
}

Кроме того, я не уверен, почему вы звоните super в onActivityResult.Это необходимо только в ваших методах onPause(), onResume(), onStart() и т. Д.onActivityResult() вызывается перед этими методами, но когда вы объявляете переменные во входных данных int requestCode, int resultCode, Intent data, почему супер-вызов родительского класса?

...