2016-11-25 5 views
0

Я использую этот код, чтобы сделать снимок на Android и получить путь и он прекрасно работает на моем Android API устройства 17.Android - Сфотографируйте API 23

Это намерение

//Open camera 
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); 

//start the image capture Intent 
startActivityForResult(intent, 100); 

и здесь, я получить путь

String picturePath; 
Uri selectedImage; 
Bitmap photo; 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode,resultCode,data); 
    if (requestCode == 100 && resultCode == RESULT_OK && data!=null) 
    { 
     try 
      { 
       selectedImage = data.getData(); 
       String[] filePathColumn = {MediaStore.Images.Media.DATA}; 
       Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); 
       cursor.moveToFirst(); 

       int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
       picturePath = cursor.getString(columnIndex); 

      //I got the picturePath, i m going to pass it to a method.. 
      createUploadFile(); 
      String check = uploadFile.execute(picturePath).get(); 

      cursor.close(); 
     .... 

проблема на API 24 или более, onActivityResult Намерение данных локальная переменная равна нулю, и я получаю ошибку здесь.

Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); 

Я добавил разрешение на андроид.

Любые помощь? Спасибо.

ответ

1

Я использую этот код, чтобы сделать снимок на Android и получить путь и он прекрасно работает на моем Android API устройства 17.

Он не будет работать для большинства устройств и большинство приложений камеры , хоть. data.getData() должен вернуть null за ACTION_IMAGE_CAPTURE, поскольку it is not documented to return anything.

Ошибка в вызове data.getData() в первую очередь. Вы знаете, где должно быть расположено изображение: в том месте, где вы указали EXTRA_OUTPUT (в этом случае все, что должно быть fileUri). Итак, посмотрите там свое изображение и избавьтесь от ненужного звонка query().

Смежные вопросы