2016-11-25 53 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()電話。

相關問題