2014-02-12 56 views
0

目的: 我想打開一個意圖選擇器,只顯示本機相機應用程序和本機畫廊應用程序。你如何限制意圖選擇器只顯示特定的應用程序?

我現在所擁有的: 我有本機攝像頭的應用程序,本土畫廊的應用程序,並且可以打開文件中的所有其他應用程序(太空人文件管理器,照片應用程序...等)

那麼,有什麼我失蹤?這將有助於限制我的意圖選擇器只顯示我需要的應用程序? (僅限圖庫和相機)?

謝謝,閱讀,並希望任何意見或建議。

 Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT,null); 
     galleryIntent.setType("image/*"); 
     galleryIntent.setClassName("com.google.android.gallery3d", "com.android.gallery3d.app.Gallery"); 

     Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     Intent chooser = new Intent(Intent.ACTION_CHOOSER); 
     chooser.putExtra(Intent.EXTRA_INTENT, galleryIntent); 
     chooser.putExtra(Intent.EXTRA_TITLE, "Select a Photo"); 
     Intent[] intentArray = {cameraIntent}; 
     chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray); 
     startActivityForResult(chooser,CAMERA_CODE); 
+1

不要以爲除了硬編碼需要在選擇器中顯示的應用程序包以外,您可以通過其他方式實現此目的。但是這些軟件包在不同的系統中可能會有所不同 - 例如,我的意思是默認的圖庫應用在原始的Android&Cyanogenmod中不會有相同的軟件包。所以最好將所有應用程序留給用戶選擇 – Sam

+0

@ SamN-a我硬編碼了Intent圖庫的名稱,但它仍然顯示所有應用程序(圖庫,照片,astro..etc)。 – xiaowoo

+1

請允許用戶使用用戶想要的任何應用程序。如果用戶討厭他們的默認相機應用程序並希望使用任何可用的第三方應用程序,這是用戶的選擇,而不是您的選擇。如果用戶想要使用與其首選社交網絡集成的圖庫風格的應用程序,那是用戶的選擇,而不是您的選擇。你不是比你的用戶更重要。 – CommonsWare

回答

1

作爲@ SamN-a寫道,這通常是不可能的。使用硬編碼的類名不是一種好的做法:即使您只查看安裝了標準GAPPS的設備,也不能保證所有設備都存在這些名稱。

但是,最好是顯示一個自定義選擇器而不是系統默認值,並且直接在操作欄上提供最相關的(例如上次使用的)點擊選擇。

+0

我剛纔提到使用硬編碼軟件包時存在很多問題。你能提供一些自定義選擇器的代碼示例嗎? – Sam

+1

@ SamN-a:看看http://stackoverflow.com/questions/5734678/custom-filtering-of-intent-chooser-based-on-installed-android-package-name及其引用。 –

相關問題