2017-08-08 121 views
1

如何從捆綁獲取URI?我已經嘗試了下面的代碼,但data.getExtras();會給出錯誤,data.getData()會給出null。從捆綁獲取URI

Intent intent = new Intent(Intent.ACTION_PICK, 

        MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
      intent.setType("image/*"); 

      intent.putExtra("scale", true); 
      intent.putExtra("crop", "true"); 
      intent.putExtra("outputX", 256); 
      intent.putExtra("outputY", 256); 
      intent.putExtra("aspectX", 1); 
      intent.putExtra("aspectY", 1); 
      intent.putExtra("return-data", true); 
      startActivityForResult(intent, 1); 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
if (requestCode == 1) { 

final Uri imageUri = data.getExtras(); 
final Uri imageUri = data.getData(); 
} 
} 
+0

退房[這](https://stackoverflow.com/questions/4233873/how-do-i-獲取額外的數據從意圖在Android)答案。 –

+0

data.getExtras()給出一個Bundle,docs說uri在getData()中,但是你必須設置intent.setAction(Intent.ACTION_GET_CONTENT); –

回答

4

如何從捆綁得URI?

你通常沒有。

but data.getExtras();會給錯誤

這是因爲getExtras()返回Bundle,而不是一個Uri

和data.getData()將給空

無論是用戶沒有挑不出什麼或沒有在ACTION_PICK的活動,用戶選擇了該請求的錯誤。

此外,請注意,您在ACTION_PICK上放置的那些附加內容沒有文檔記錄,不受支持,並且在許多設備上都不會兌現。有很多image cropping libraries available for Android。請使用一個。另外,ACTION_PICK不使用MIME類型。 ACTION_PICK表示「從這個內容集合中挑選一段內容」。如果您想按MIME類型限制內容,請使用ACTION_GET_CONTENT(並在Intent中使用Uri)或ACTION_OPEN_DOCUMENT來說「給我一段匹配此MIME類型的內容」。

+0

補充說,他必須設置行動,並且是完美的答案。 –

+0

我的目的是從圖庫中選擇一個圖像來獲得uri。我有API> 22的代碼。我需要棒棒糖代碼。你能舉一些例子或參考嗎? – djac

+0

@MatiasOlocco:我不確定你指的是什麼。這個問題有'新意圖(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);'。 'ACTION_PICK'是一個動作。但是,我確實看到這個問題有'setType()',它不會與'ACTION_PICK'一起使用,所以我會將其添加到我的答案中。 – CommonsWare

0

你忘了intent.setAction(Intent.ACTION_GET_CONTENT);

如果不加,你data.getData()將空

+0

如果用戶選擇一段內容,ACTION_PICK將返回一個Uri。 – CommonsWare