ifreamを含むページがWebViewでうまく動作してくれない(ブラウザアプリで表示とWebViewで表示とで、挙動が一致しない)問題に直面し、ハマっておりました。
WebViewをIntelが開発しているオープンソースライブラリ
CrossWalk のXWalkViewに置き換えたところ、ifream内も正常に動作してくれました!
置き換え時にやったこと
1.app/build.gradle
repositories {
maven {
url 'https://download.01.org/crosswalk/releases/crosswalk/android/maven2'
}
}
android {
// ...
}
dependencies {
// ...
compile "org.xwalk:xwalk_core_library:17.46.448.10"
// ...
}
2.Java
- webview.getSettings().setJavaScriptEnabled(true)の設定は削除(該当メソッドは無いけど、javascriptは有効になってるっぽい)
- webView.loadUrl -> loadに変更
- @JavascriptInterface -> @org.xwalk.core.JavascriptInterfaceに変更
- webview.setWebViewClient -> setResourceClientに変更
- shouldOverrideUrlLoading 継承(遷移しようとするURLの取得)。戻り値にtrue
- WebViewClient#onPageStartedのかわりにXWalkResourceClient#onLoadStartedを継承
- WebViewClient#onPageFinishedのかわりにXWalkResourceClient#onPageFinishedを継承
3.xml
- <WebView を <org.xwalk.core.XWalkViewに変更
License
3-clause BSD license(三条項BSDライセンス)
(New BSD License(修正BSDライセンス ) とも呼ばれている)
ライセンスと著作権の表示が必須で、商用利用、修正、配布、派生物に別の条件を課すことが可能です。
参考