要求特定的活動是有風險的,因爲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;
}
來源
2011-07-13 05:56:35
Guy
你可以給一些示例代碼更容易理解嗎?感謝 – Praveen 2010-05-21 17:35:04
你可否告訴我什麼是隱式YouTube玩家活動?在Logcat中,它顯示了這個:「com.google.android.youtube/.PlayerActivity」。我能怎麼做 ? – Praveen 2010-05-21 18:11:49
您將使用com.google.android.youtube.PlayerActivity。但是,正如Mayra所提到的,這是一個壞主意,因爲它會惹惱那些可能安裝了替代應用程序的人,並且如果有人在未安裝YouTube應用程序的情況下在設備上運行應用程序,您的應用程序就會崩潰。這是Android的等價硬編碼「iexplore.exe」來打開一個網頁。 – 2010-05-21 18:48:54