編集:以下の実装は、少なくとも一部の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);
ここで、Utilityは次のメソッドを使用した私の個人用ユーティリティクラスです。
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に伝えます。