2013-06-23 57 views
0

如何使用默認(不想創建自己的)應用選擇器時,選擇應用的意圖...選擇器顯示,用戶選擇一個應用程序,我用特定的URI顯式調用它?內部應用選擇器

Intent intent = new Intent(Intent.ACTION_SEND); 
// Create and start the chooser 
Intent chooser = Intent.createChooser(intent, "title"); 
startActivity(chooser); //I dont want to start the intent ... just to know which one user chose 
+0

是什麼問題?你的代碼看起來不錯。您可以爲您的意圖添加一個類型,以篩選特定類型的數據。 e,g,intent.setType(「plain/text」); – Ran

+0

我必須使用「geo:」標籤...有些應用程序不理解google實現的語法,並且需要特定的格式...我需要知道用戶想要運行哪一個,然後發送適當的uri – Flowy

回答

1

選擇器顯示,用戶選擇一個應用程序,我與特定URI顯式調用呢?

沒有內置於Android的內容可以滿足您的要求。

我必須使用「geo:」標籤......有些應用程序不理解google實現的語法,需要特定的格式...我需要知道用戶想要運行哪一個,然後發送適當的uri

這是不可能的,因爲用戶可用的應用程序列表取決於Uri。你甚至不能手動構造一些「選擇器」對話框來返回選擇而不是啓動活動,因爲你不知道要在列表中填寫什麼條目。

如果你的目標是:

  • 使用某種Intent如果有支持它的一個或多個活動,或

  • 使用一些其他Intent如果沒有支持你的第一個Intent活動

那麼你可以做的是:

  • 製作您的第一張Intent,並將其傳遞到PackageManagerqueryIntentActivities()。如果返回一個非空List,你可以調用該Intent

  • 重複startActivity()對所有候選Intent結構上述步驟,直到你找到一個你可以撥打

或者startActivity(),您可以:

  • 工藝的第一Intent並呼籲它startActivity(),包裝這一呼籲在try/catch塊來監視ActivityNotFoundException

  • 重複上述步驟,直到你成功地調用startActivity()沒有例外,或者直到用完Intent結構的嘗試

有更詳細的選項,以及(例如,使用來自的結果創建您自己的選擇器,所有可能的Intent結構而不僅僅是一個)。