2016-07-26 4 views
-2

Intent.getData() возвращает null на Android API 23 и отлично работает для предыдущей версии?Intent.getData() возвращает null в Android API 23

private void takePicture() { 
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
    startActivityForResult(intent, 0); 
} 

...

private void choosePicture() 
{ 
    Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
    photoPickerIntent.setType("image/*"); 
    startActivityForResult(photoPickerIntent, 1); 
} 

...

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    ... 
    Uri selectedImage = data.getData(); 
    String imagePath = getPath(selectedImage); 
    dest = new File(imagePath); 
    decodeFile(imagePath); 
    ... 
} 
+0

Может ли это иметь ничего общего с правами доступа во время выполнения в 6.0? – Vucko

+0

- это предоставленное разрешение: 'Manifest.permission.READ_EXTERNAL_STORAGE'' Manifest.permission.CAMERA' – Abdellah

+0

@ Vucko не записывает внешнее хранилище: /? – Abdellah

ответ

0
public boolean ifPermissionReady(){ 
     if (ContextCompat.checkSelfPermission(getActivity(), 
       Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){ 
      System.out.println("req camera permission*****"); 
      checkPermission(Manifest.permission.CAMERA, Constant.PERMISSION_CAMERA); 
      return false; 
     } 

     if (ContextCompat.checkSelfPermission(getActivity(), 
       Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){ 
      System.out.println("req write storage permission*****"); 
      checkPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, Constant.PERMISSION_WRITE_EXTERNAL_STORAGE); 
      return false; 
     } 
     return true; 
    } 

Попробуйте вызвать эту функцию в первую очередь. убедитесь, что вы получили разрешение. API23 требует этого. Запустите его, когда вы нажимаете, чтобы включить камеру для фотосъемки. Вы можете запустить камеру без этой функции. Мое приложение будет вылетать, если я не делаю это в API 23

0

Если data.getData() возвращает нуль, то попробуйте:

 Bundle extras = data.getExtras(); 
     Bitmap bitmap = (Bitmap) extras.get("data"); 
Смежные вопросы