Android 용 Appstore에 Amazon으로 제출 한 여러 가지 앱이 Android 마켓에 있습니다. Kindle Fire가 나올 때까지 일이 잘 돌아갔습니다. 몇 가지 응용 프로그램에서는 WebView의 링크에서 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;
}
}
});
내가 말했듯이 우리가 테스트 한 모든 안드로이드 장치에서 잘 작동,하지만 우리는 아마존에서 통보 받고 있는지 동영상 링크를 클릭하면 충돌이 발생합니다. Fire가 YouTube 앱으로로드되지 않기 때문에 이러한 상황이 발생했다고 가정합니다. 다른 누구도 비슷한 문제를 경험 했습니까? Fire의 webview에서 YouTube 비디오를 재생할 때 가장 선호되는 방법은 무엇입니까?
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 감가 상각 (이 오래된 코드) : 아래 (ListView가있는 항목을 클릭 할 때 해당 HTML 페이지를 표시) 내가 사용하는 업데이트 된 코드입니다. 킨들 파이어 (Kindle Fire)에 대한
<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을 가지고 ...이 조각을 구현하는 데 사용하는 기본 코드를 업데이트하는 작업을하고 있습니다. 이 코드가 다른 장치에서도 작동하는지 확인해야 겠지만 할 일 목록에 추가해야합니다. 특정 예외 유형이 예외를 잡을 다음 URL을 editting에 의해 브라우저를 실행하는 코드를 작성하는
<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
나는 방금 불을 샀다. 나는 그것을 시험하고있다. 표준 iframe을 사용하여 재생할 동영상이 있지만 동영상을 재생할 때 프레임의 전체 화면 버튼을 클릭하면 강제 종료됩니다. 01-23 21 : 58 : 27.093 : E/AndroidRuntime (2485) : android.view.WindowManager $ BadTokenException : 창을 추가 할 수 없습니다 - 토큰 [email protected] 유효하지 않습니다; 당신의 활동은 실행 중입니까? – WookieLNX
내 답변 editted. 또한이 새로운 문제를 추가하여 질문을 업데이트해야합니다. 목록에 agaion이 표시되고 – akkilis