2012-10-03 13 views
0

我可以創建與下面的代碼選擇器:如何指定要在Intent.createChooser中顯示的內容?

Intent share = new Intent(Intent.ACTION_SEND); 
       share.setType("text/plain"); 
       share.putExtra(Intent.EXTRA_TEXT, "hello"); 
       startActivity(Intent.createChooser(share, "my title")); 

我想送(假設)這個「你好」,但我想指定應該出現在與此調用startActivity(Intent.createChooser(share, "my title"));開始的活動是什麼,它的顯示所有安裝在我的手機中的應用程序。我不能僅限於幾個應用程序嗎?

+1

的意圖可以與startActivity來啓動一個活動,broadcastIntent將其發送給任何感興趣的BroadcastReceiver組件。沒有指定數據傳遞給誰。所以,沒有選項可以指定顯式的活動名稱。但是,有可能,如果你知道應用程序活動的確切名稱,你可以直接在你自己的代碼中調用它。 –

+0

好的..如果我知道活動的名稱並想只顯示選擇器中的名稱,該怎麼辦? –

回答

1

當你這樣做時,所有可以接收你的意圖的應用程序都會顯示給用戶,所以他可以選擇他更喜歡執行指定操作的應用程序。不,你不能僅限於少數應用程序。

但是,如果您知道它是活動名稱,則可以直接調用某個應用程序。在這種情況下,請忽略選擇器並使用列表視圖和所需應用程序的名稱創建您自己的對話框。當用戶選擇其中的一個時,然後將意圖僅發送到該特定應用程序。

確保您檢查用戶是否擁有該應用程序。您可以通過查詢包管理器來查看接收特定類型廣播的所有廣播接收器(例如:文本廣播)。您可以通過這樣做:

公共抽象列表queryBroadcastReceivers(意向意圖,INT標誌)

該開發者文檔是在這裏: https://developer.android.com/reference/android/content/pm/PackageManager.html#queryBroadcastReceivers%28android.content.Intent,%20int%29

+0

好的......如果我知道活動的名稱並且只想顯示選擇器中的名稱,該怎麼辦? –

+0

回答已更新,以反映你的問題 –

+0

好吧,看起來很公平。謝了哥們 :-) –