在我的应用程序中,我有一个 WebView,可用于显示 www.youtube.com 或 m.youtube.com 内容。我在 onLoadResource 回调中有以下代码:
@Override
public void onLoadResource (WebView view, String url)
{
if(matchYouTubeWatchUrl(url))
{
invokeYouTubePlayer(m_context,url);
}
}
invokeYouTubePlayer 函数如下所示:
private static void invokeYouTubePlayer(Context c, String url)
{
try
{
Uri uri = Uri.parse(url);
String videoId = uri.getQueryParameter("v");
if(videoId != null)
{
Intent youtubeIntent = new Intent(Intent.ACTION_VIEW);
youtubeIntent.setData(Uri.parse("vnd.youtube://"+videoId));
try
{
c.startActivity(youtubeIntent);
}
catch(ActivityNotFoundException e)
{
Log.e(TAG,"No handler for native youtube - expanding scope");
// Try an alternate approach if there's no youtube app installed
youtubeIntent = new Intent(Intent.ACTION_VIEW);
youtubeIntent.setData(Uri.parse("http://www.youtube.com/watch?v="+videoId));
try
{
c.startActivity(youtubeIntent);
}
catch(ActivityNotFoundException e2)
{
e2.printStackTrace();
}
}
}
}
catch(NullPointerException e)
{
e.printStackTrace();
}
}
我发现在大多数 Android 设备上,第一个 startActivity 调用调用 YouTube 应用程序,但是在 KF 上,我看到的是它调用浏览器,然后调用视频播放器应用程序。
我自己没有 KF,我想知道是否有一个 URI 可以传递给 startActivity,它将直接调用 Kindle Fire 上的视频播放器,而无需通过浏览器作为中间步骤。