2012-04-03 60 views
1

首先,這不是結果代碼過早返回的常見問題。在這種情況下,只有在畫廊中挑選物品後纔會返回。Android圖庫始終將RESULT_CANCELED返回到onActivityResult

在我的測試情況下,我所說的畫廊與此代碼:

Intent intent = new Intent(); 
intent.setType("image/*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
startActivityForResult(intent, SELECT_PICTURE); 

,並在onActivityResult有:

if (resultCode == Activity.RESULT_OK) { 
    if (requestCode == SELECT_PICTURE) { 
     Uri selectedImageUri = data.getData(); 
     pathText.setText(selectedImageUri.getPath()); 
    } 
} else { 
    pathText.setText("Result not OK - code is " + resultCode); 
} 

pathText只是一個TextView我把在顯示結果中測試用例。在實際應用中,路徑有不同的用途。

如果我使用ACTION_PICK而不是_GET_CONTENT,我會收到別人報告的立即失敗。清單中沒有launchMode標籤(有些帖子在該區域提出了問題)。

也許這裏有一條線索。在東芝Thrive上,使用圖庫,文件管理器或Fish Bowl照片庫不會出現此錯誤。在Kindle Fire上,Quickoffice也能夠正確返回圖像路徑。該漏洞只在Kindle的內置圖庫中出現。在「摩托羅拉Droid(2.3.4),HTC EVO(2.3)」上也觀察到這個錯誤。

請問,我怎樣才能以適用於所有這些設備的方式從圖庫中獲取圖像路徑?

+0

似乎它是Kindle Fire中的一個錯誤。也許重複的http://stackoverflow.com/questions/9951006/android-image-picker-doesnt-work-on-kindle-fire/9951054#9951054 – 2012-04-03 22:05:01

+0

我認爲你一定是對的。我確信幾周前我寫了這段代碼,但最近失敗了。 – 2012-04-04 16:55:16

回答

0

嗨史蒂夫嘗試,這似乎對我的牆紙項目

Intent intent = new Intent(); 
     intent.setType("image/*"); 
     intent.setAction(Intent.ACTION_GET_CONTENT); 
     startActivityForResult(Intent.createChooser(intent, "Select Picture"),SELECT_PICTURE); 
+0

謝謝,但是這給出了和我的代碼完全一樣的結果。 – 2012-04-04 16:50:50

1

我想工作,默認庫不返回結果代碼,如果你不是在意向指定要返回結果代碼。您可以在意向指定由您的代碼中添加該片段是這樣,返回結果代碼:

Intent intent = new Intent(); 
intent.setType("image/*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
intent.putExtra("return-data", true); //added snippet 
startActivityForResult(Intent.createChooser(intent, "Select Picture"),SELECT_PICTURE); 

如果這篇文章可以幫助你,請註明這篇文章作爲一個答案。

謝謝。

0

當我在該活動的清單中設置launchMode =「singleInstance」時,我的某個活動中遇到了同樣的問題。當我刪除該屬性時,它工作正常。

相關問題