2013-12-16 326 views
2

我想在我的應用程序中做的是讓用戶從他的手機畫廊中選擇一張圖片。我正在使用的代碼如下:Intent.EXTRA_LOCAL_ONLY does not work

Intent intentBrowseFiles = new Intent(); 
    intentBrowseFiles.setType("image/*"); 
    intentBrowseFiles.setAction(Intent.ACTION_GET_CONTENT); 
    intentBrowseFiles.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 
    startActivityForResult(Intent.createChooser(intentBrowseFiles,"Select Picture"), SHOW_GALLERY); 

通過將:

intentBrowseFiles.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 

我以爲這隻會火畫廊意圖,而是用戶留下了他的驅動器的選擇,保管箱和其他在線帳戶以及本地圖庫...

我不想要任何其他遠程資源,有什麼我在這裏失蹤?

回答

3

當您使用像ACTION_GET_CONTENT這樣的意圖操作時,您告訴系統選擇要打開的應用程序。如果用戶沒有爲其設置默認值,則會詢問要使用哪個應用程序。對話框中的應用程序將顯示任何表示可以處理該類型意圖的應用程序。

如果您想要使用意圖啓動特定活動,則必須按名稱進行調用。這裏的問題是,圖庫應用可能在不同的設備上被命名不同,或者完全刪除。

允許用戶選擇他們的應用程序的選擇是一般是正確的事情。這絕對是「Androidy」的方式。

無論哪種方式,EXTRA_LOCAL_ONLY只告知接收應用程序它應該應該只返回存在的數據。它不強制執行這一條件。

+1

我也添加了'Intent.EXTRA_LOCAL_ONLY',現在它隱藏了谷歌驅動器的選擇,但它顯示**谷歌照片**(這些照片不在SD卡中)。 –