РЕДАКТИРОВАТЬ: приведенная ниже реализация оказалась проблема по крайней мере на некоторых устройствах HTC (они потерпели крах). По этой причине я не использую setclassname и придерживаюсь меню выбора действий. Я настоятельно не рекомендую использовать мою старую реализацию.
Ниже приводится старая реализация:
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(youtubelink));
if(Utility.isAppInstalled("com.google.android.youtube", getActivity())) {
intent.setClassName("com.google.android.youtube", "com.google.android.youtube.WatchActivity");
}
startActivity(intent);
Где Утилита - это мой личный служебный класс со следующим методом:
public static boolean isAppInstalled(String uri, Context context) {
PackageManager pm = context.getPackageManager();
boolean installed = false;
try {
pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
installed = true;
} catch (PackageManager.NameNotFoundException e) {
installed = false;
}
return installed;
}
Сначала я проверяю, установлен ли youtube, если он установлен, я сообщаю android, какой пакет я предпочитаю открывать.