2016-07-26 103 views
-2

Intent.getData()返回在Android API 23上的null并且对于以前的版本正常工作?Intent.getData()在Android API上返回null 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()返回null,则尝试:

 Bundle extras = data.getExtras(); 
     Bitmap bitmap = (Bitmap) extras.get("data"); 
相关问题