Как скрыть окно Intent Chooser в android?

Когда я нажимаю кнопку, я запускаю действие для видео youtube следующим образом:

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

Если я использую его в своем перенаправлении на выбор намерения, чтобы открыть этот URL-адрес видео в браузере или приложении YouTube. Как программно выбрать приложение по умолчанию как youtube?

Мой выход должен открыть это видео непосредственно на проигрывателе YouTube. как? Есть идеи?

Запросить конкретную активность является рискованным, так как YouTube может изменить имя своего пакета, которое будет следовать при нарушении вашего приложения.

Также – нет гарантии, что YT-плеер установлен на всех устройствах Android.

Чтобы обойти, вот код, который ищет активность youtube. Если он находит это, он возвращает намерение использовать его напрямую, в противном случае он сохраняет «общее» намерение, которое приведет к отображению выбора системного намерения.

 /** * @param context * @param url To display, such as http://www.youtube.com/watch?v=t_c6K1AnxAU * @return an Intent to start the YouTube Viewer. If it is not found, will * return a generic video-play intent, and system will display a * chooser to ther user. */ public static Intent getYouTubeIntent(Context context, String url) { Intent videoIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); final PackageManager pm = context.getPackageManager(); List<ResolveInfo> activityList = pm.queryIntentActivities(videoIntent, 0); for (int i = 0; i < activityList.size(); i++) { ResolveInfo app = activityList.get(i); if (app.activityInfo.name.contains("youtube")) { videoIntent.setClassName(app.activityInfo.packageName, app.activityInfo.name); return videoIntent; } } return videoIntent; } 

Вы используете неявное намерение, которое может соответствовать нескольким получателям, таким образом, выбор. Вы можете попробовать переключиться на явную модель намерения, если вы можете выяснить, как настроить таргетинг на активность youtube напрямую. См. Документацию разработчика о явных или неявных намерениях.

Однако, по-видимому, причина выбора намерения заключается в том, чтобы каждый пользователь сам решал, какой игрок использовать. Есть ли веская причина, по которой вы хотите обойти это? Что делать, если кто-то установил другой видеоплеер, который они предпочитают?

Изменить: Чтобы вызвать явное намерение, вам нужно знать имя запускаемой вами операции, и вы передаете дополнительные данные в качестве дополнительных параметров, например:

 Intent intent = new Intent(this, YouTubeViewerActivity.class); intent.addExtra("URI", Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")); startActivity(intent); 

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

Intereting Posts
Может ли один эмулятор отправить SMS на себя Android: контекстное меню с одним щелчком мыши Как использовать проводник на корневом устройстве? Как добавить изображение контакта внутри ContentProviderOperation? Как применить действие уведомления о нажатии на конкретную активность в android? Ошибка AppCompat v7 r21 в значениях.xml? Заставить элемент ListView оставаться нажатым после нажатия? TCP-сервер RPC (Erlang или что-то подобное?) Для связи с приложениями iOS / Android Отображение текущего выбора в списке Приложение для Android от Cordova 5.0.0 не может подключиться к Интернету с помощью Android 4.0.0 Apk работает только в режиме отладки. Apk начал с «Run» в заходах Eclipse на контрольных точках «Начало тега не закрывается» при комментировании в начале и конце тега элемента XML Когда вызывается вызов ServiceConnection.onServiceDisconnected ()? Разница между перегрузкой и перегрузкой? ANDROID – Отправить скриншот от java to android через tcp socket