私たちはAndroid用Appstoreにアマゾンに提出した複数のアプリがAndroidマーケットにあります。 Kindle Fireが出てくるまでうまくいきました。いくつかのアプリケーションでは、WebViewのリンクからYoutubeビデオを起動します。ここでビューをプッシュし、YouTubeのリンク扱うsetOnClickListenerから関連するコードです:WebViewのKindle FireとYoutubeリンク
mWebView.setWebViewClient (new WebViewClient() {
@ Override public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("vnd.youtube")){
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
} else{
return false;
}
}
});
私が言ったように、これは我々が上でテストしたすべてのAndroidデバイス上で素晴らしい作品が、私たちは、アマゾンから通知取得されますビデオリンクをクリックするとクラッシュしてしまいます。 FireがYouTubeアプリを搭載していないため、これが起こっていると思います。他の誰かが同様の問題を経験しましたか? FireのWebviewからyoutubeビデオを再生するための推奨される方法は何でしょうか?ここで
は、Amazonが提供さlogcatです:
01-09 12:28:32.715 W/dalvikvm(5805): threadid=1: thread exiting with uncaught exception (group=0x40015560)
01-09 12:28:32.715 D/ActivityManager(1372): Starting: Intent { act=android.intent.action.VIEW dat=vnd.youtube://XXXXXXXXXX } from pid 5805
01-09 12:28:32.793 E/AndroidRuntime(5805): FATAL EXCEPTION: main
01-09 12:28:32.793 E/AndroidRuntime(5805): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=vnd.youtube://XXXXXXXXXX }
01-09 12:28:32.793 E/AndroidRuntime(5805): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1409)
01-09 12:28:32.793 E/AndroidRuntime(5805): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1379)
01-09 12:28:32.793 E/AndroidRuntime(5805): at android.app.Activity.startActivityFromChild(Activity.java:3103)
01-09 12:28:32.793 E/AndroidRuntime(5805): at android.app.Activity.startActivityForResult(Activity.java:2883)
01-09 12:28:32.793 E/AndroidRuntime(5805): at android.app.Activity.startActivity(Activity.java:2969)
01-09 12:28:32.793 E/AndroidRuntime(5805): at com.XXXXXXXXXX.XXXXXXXXXX.VideoActivity$1$1.shouldOverrideUrlLoading(VideoActivity.java)
01-09 12:28:32.793 E/AndroidRuntime(5805): at android.webkit.CallbackProxy.uiOverrideUrlLoading(CallbackProxy.java:216)
01-09 12:28:32.793 E/AndroidRuntime(5805): at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:323)
01-09 12:28:32.793 E/AndroidRuntime(5805): at android.os.Handler.dispatchMessage(Handler.java:99)
01-09 12:28:32.793 E/AndroidRuntime(5805): at android.os.Looper.loop(Looper.java:130)
01-09 12:28:32.793 E/AndroidRuntime(5805): at android.app.ActivityThread.main(ActivityThread.java:3683)
01-09 12:28:32.793 E/AndroidRuntime(5805): at java.lang.reflect.Method.invokeNative(Native Method)
01-09 12:28:32.793 E/AndroidRuntime(5805): at java.lang.reflect.Method.invoke(Method.java:507)
01-09 12:28:32.793 E/AndroidRuntime(5805): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:850)
01-09 12:28:32.793 E/AndroidRuntime(5805): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
01-09 12:28:32.793 E/AndroidRuntime(5805): at dalvik.system.NativeStart.main(Native Method)
編集
私が正しく、この作業を取得することができました。基本的には、ビデオフォルダ(ビデオページのすべてのHTMLを含む)をアセットにコピーして、新しいvideo_fireディレクトリにコピーしました。 android.os.Build.MODELが "Kindle Fire"の場合は、実際のコードをvideo_fireディレクトリを指すように更新し、他のすべての場合は通常のビデオディレクトリを参照しました。また、VideoActivityではなくgetParent()を使用するようにWebViewの割り当てを変更しました。これにより、フルスクリーン表示に関するコメントで説明した問題が修正されました。
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
String contentsOfHtml;
try {
if (android.os.Build.MODEL.equals("Kindle Fire")) {
contentsOfHtml = readFileAsString("video_fire/"+htmlarray[position]);
} else {
contentsOfHtml = readFileAsString("video/"+htmlarray[position]);
}
} catch (IOException e) {
// Should never happen!
throw new RuntimeException(e);
}
WebView mWebView = new WebView(getParent());
WebSettings webSettings = mWebView.getSettings();
webSettings.setPluginsEnabled(true);
webSettings.setJavaScriptEnabled(true);
mWebView.setWebViewClient (new WebViewClient() {
@ Override public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("vnd.youtube")){
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
} else{
return false;
}
}
});
mWebView.loadDataWithBaseURL("file:///android_asset/", contentsOfHtml, "text/html", "utf-8", "");
ReflectionGroup.group.replaceView(mWebView);
return;
});
はい、私が使用しているActivityGroup減価償却される(これは古いコードである):以下は、(リストビュー内の項目をクリックすると、それは適切なHTMLページを表示する)私が使用し、更新されたコードです。 Kindleの火災のため
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<p class="title">Title</p>
<hr/>
<a href="vnd.youtube://XXXXX"><div><center><img src="images/video1.jpg" width="220" height="150"></center></div></a>
</center>
<p class="para">Text</p>
<hr/>
</body>
</html>
と特定のHTML:私は、通常のデバイスのためのHTMLを持って
...これはフラグメントを実装するために使用する基本コードの更新に取り組んでいます。私は、このコードが他のデバイスでも動作するかどうかを確認する必要がありますが、それは私のto-doリストに置かなければなりません。特定の例外タイプと、この例外をキャッチして、あなたのURLを製作中で、ブラウザを起動するコードを記述する
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<p class="title">Title</p>
<hr/>
<iframe class="youtube-player" type="text/html" width="600" height="361" src="http://www.youtube.com/embed/XXXXXXXX" frameborder="0">
</iframe>
</center>
<p class="para">Text </p>
<hr/>
</body>
</html>
解決策は見つかりましたか? – akkilis
今日は火の火を買ったばかりで、私はそれを試しています。 01-23 21:58:27.093:E/AndroidRuntime(2485)この動画は、標準のiFrameを使用して再生する動画を持っていますが、動画を再生するときにフレーム内の全画面ボタンをクリックすると、 :android.view.WindowManager $ BadTokenException:ウィンドウを追加できません - トークン[email protected]は無効です。あなたの活動は実行されていますか? – WookieLNX
私の答えeditted。また、この新しい問題を追加して質問を更新して、リスト内の挑戦を見て、 – akkilis