Как мне обойти «Завершить действие, используя ...» - PullRequest
2 голосов
/ 07 декабря 2009

У меня есть вопрос, связанный с программным выбором приложения при отображении диалогового окна «Выполнение действия с использованием» в Android.

Пример будет следующим: В моем коде у меня есть это утверждение

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

Затем мне будет показано диалоговое окно с двумя вариантами: завершить действие с помощью браузера или YouTube

Есть идеи, как выбрать YouTube без отображения диалогового окна?

Спасибо!

Николай

Ответы [ 2 ]

0 голосов
/ 08 декабря 2009
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); 
}
0 голосов
/ 08 декабря 2009

Я думаю, вам понадобится дополнительная информация о фильтре намерений приложения, которое вы хотите запустить по умолчанию (в данном случае, приложение youtube). Это целевое приложение может иметь несколько фильтров намерений, и один из них может быть более конкретным. Вы можете вызвать startActivity с этим конкретным намерением, и тогда намеченное приложение будет запущено напрямую. Однако для этого требуется больше знаний о целевом приложении (что в большинстве случаев сложно, например, в приложении Youtube).

Кроме этого, я не думаю, что вы можете многое сделать из своего приложения. Намеренное разрешение выполняется платформой Android, поэтому, если пользовательское приложение может каким-либо образом переопределить его, это будет недостатком с точки зрения безопасности.

...