Ошибка про работе с камерой андройд 6

240
18 мая 2017, 09:47

Ошибка:

Attempt to get lenght of null array.

Помогите плиз не могу понять что с этими разрешениями не так:

private void CallCamera() {
  File folder = new File("sdcard/camera_app");
  if (!folder.exists()) {
    folder.mkdir();
  }
  File image_file = new File(folder, "cam_image.jpg");
  Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image_file));
  startActivityForResult(cameraIntent, CAM_REQUEST);
}

public void MakePhoto(View view) {
  if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
    CallCamera();
  } else {
    if (shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
      Toast.makeText(this, "Nu Avem Permis de salvare a imaginii", Toast.LENGTH_SHORT).show();
    }
    requestPermissions(new String[] {
      Manifest.permission.WRITE_EXTERNAL_STORAGE
    }, REQUEST_EXTERNAL_RESULT);
  }
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
  if (requestCode == REQUEST_EXTERNAL_RESULT) {
    if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
      CallCamera();
    } else {
      Toast.makeText(this, "Nu avem permis de a salva foto", Toast.LENGTH_SHORT).show();
    }
  } else {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  }
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  // String path = "sdcard/camera_app/cam_image.jpg";
  // ImageView imageView;
  // imageView = (ImageView) findViewById(R.id.camera);
  // imageView.setImageDrawable(Drawable.createFromPath(path));
  Toast.makeText(this, "Succes!", Toast.LENGTH_SHORT).show();
}
Answer 1

Как минимум на запрос разрешение использовать камерой отвечает вот эта переменная:

Manifest.permission.CAMERA

Вы же проверяете только разрешение на запись.

Так же у вас очевидная ошибка:

if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
      CallCamera();
    } else {
      Toast.makeText(this, "Nu avem permis de a salva foto", Toast.LENGTH_SHORT).show();
    }

Вы обращаетесь к переменной grantResults[0] с надеждой, что в нем будет запись.

Attempt to get lenght of null aray

Говорит о том, что вы обращаетесь к массиву, в котором нет каких либо записей. В вашем случае длина массива == 0, отсюда и ошибка. Добавьте условие grantResults.length > 0 && ...

READ ALSO
AndroidTV логин через Facebook

AndroidTV логин через Facebook

Добрый деньНеобходима подсказка относительно логина через Facebook для AndroidTv

198
Как поместить пары значений в Map?

Как поместить пары значений в Map?

Доброго времени суток

247
Появляющееся меню на CSS

Появляющееся меню на CSS

Добрый день, коллеги! Вопрос скорее из разряда теоретических - возможно ли это сделать и возможно ли посредством только СSS, а не правильно...

339
hover при загрузке страницы, а не при наведении

hover при загрузке страницы, а не при наведении

Есть ли элемент в css, наподобие hover, только чтобы эффект начинался сразу при открытии страницы, а не при наведении на элемент?

277