2009-12-07 58 views
2

我有一個問題,涉及在Android中顯示對話框「完成操作使用」時以編程方式選擇應用程序。如何繞過「完成操作使用...」

一個例子是如下: 在我的代碼,我有這樣的說法

startActivity(new Intent(Intent.ACTION_VIEW, 
     Uri.parse("http://www.youtube.com/watch?v=98yl260nMEA"))); 

我會再顯示一個對話框,有兩個選項: 使用瀏覽器或完成動作的YouTube

任何想法如何選擇YouTube而不顯示對話框?

謝謝!

尼古拉斯

+0

您是否找到了解決方案? – keen 2014-06-05 06:20:59

回答

0

我想你會需要你想要的默認啓動(在這種情況下,YouTube應用程序)應用程序的意圖過濾器的詳細信息。該目標應用可能有多個意向過濾器,其中一個可能更具體。您可以使用該特定的意圖調用startActivity,然後直接啓動預期的應用程序。但是,這需要您有更多的目標應用程序知識(在大多數情況下,比如Youtube應用程序都很困難)。

除此之外,我認爲你不能在你的應用程序中做很多事情。意圖解決方案是由Android框架完成的,所以如果用戶應用程序可以以某種方式覆蓋它,那麼這在安全性方面是一個缺陷。

+0

嗯...有道理。謝謝,Jayesh。 我有這個代碼(但它只顯示我建議的應用程序使用 - 在這種情況下,瀏覽器和YouTube) PackageManager pm = getPackageManager(); \t \t List activities = pm.queryIntentActivities(new Intent(Intent.ACTION_VIEW,Uri.parse(http://www.youtube.com/watch?v=Zi_XLOBDo_Y)),0); \t \t迭代器 actList = activities.iterator(); \t \t while(actList.hasNext()){ \t \t \t ResolveInfo curr = actList.next(); \t \t \t \t \t \t Log.d( 「意圖=====>」,curr.toString()+ 「」 + curr.match + 「」 + curr.isDefault); \t \t} – 2009-12-08 19:54:22

0
PackageManager pm = getPackageManager(); 
List<ResolveInfo> activities = pm.queryIntentActivities(new Intent(Intent.ACTION_VIEW, Uri.parse(youtube.com/watch?v=Zi_XLOBDo_Y)), 0); 
Iterator<ResolveInfo> actList = activities.iterator(); 
while(actList.hasNext()) { 
    ResolveInfo curr = actList.next(); 
    Log.d("Intents =====> ", curr.toString() + " " + curr.match + " " + curr.isDefault); 
}