2016-11-25 20 views
0

我使用这个代码,以在Android上的图片,并获得路径图API,它工作正常在我的Android设备API 17Android的 - 以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); 

我已添加运行时android权限。

有帮助吗?谢谢。

回答

1

我使用这个代码,以在Android上的图片,获取路径和它的作品在我的Android设备API罚款17

它不会对大多数设备和大多数相机应用工作,但是。对于ACTION_IMAGE_CAPTUREdata.getData()应该返回null,范围为it is not documented to return anything

bug是在第一个地方叫data.getData()。您知道图像应该放在哪里:在您提供给EXTRA_OUTPUT的位置(在这种情况下,不管fileUri是什么)。所以,看看你的形象,摆脱不必要的query()电话。

相关问题