Android4.4(KitKat)から、WebViewでChromeが使われるようになった。これとともに、shouldOverrideUrlLoadingが呼ばれないという問題が起きていた。
原因の1つは、aタグのhref属性に、不正な形式のURIが指定されているというもの。<a href='share-content'> というようになっているとshouldOverrideUrlLoadingが呼ばれない。これはたとえば、<a href='intent:share-content'> というようにしなくてはいけない。
もう1つの原因は、webview.getSettings().setSupportMultipleWindows(true) と指定しており、リンクが target='_blank' となっているもの。target='_blank' をやめるか、webview.getSettings().setSupportMultipleWindows(false) にしなくてはいけない。なお、これはデフォルトでfalseなので明示的に指定しなければ問題ない。
nendの広告を、WebView内に表示していたのだが、これが反応しなくなっていて困った。
2014-09-25
2014-09-24
AndroidでBitmapをWebViewに表示する
Data URIスキーマを使えば、AndroidのWebViewにBitmapを表示することができる。つまり、imgタグのsrcに、「http://」で始まる画像の場所を書くのではなくて、「data:image/png;base64,」のようにして始まる画像のデータを埋め込む。
たとえば、Bitmap iconがあったとして、
Base64にエンコードするときは、Base64.NO_WRAPをしてやらないとダメ。
たとえば、Bitmap iconがあったとして、
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
icon.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream.toByteArray();
String imgageBase64 = Base64.encodeToString(byteArray, Base64.NO_WRAP);
String imageSrc = "data:image/png;base64," + imgageBase64;
String htmlTag = "<img src='" + imageSrc + "'/>";
みたいにやる。Base64にエンコードするときは、Base64.NO_WRAPをしてやらないとダメ。
can't find referenced class android.view.accessibility.CaptioningManagerを直す
Androidのproguard関連のエラー。AdMobを更新したらエラーで失敗するようになった。「com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager」と言われる。
「You may need to specify additional library jars (using '-libraryjars').」と出力されていたが、この方法では直らなかった。
プロジェクトのビルドターゲットを、Android4.4.2にしたら直った。AndroidManifest.xmlのandroid:targetSdkVersionのことではなくて、eclipseのプロパティで設定するやつ。
「You may need to specify additional library jars (using '-libraryjars').」と出力されていたが、この方法では直らなかった。
プロジェクトのビルドターゲットを、Android4.4.2にしたら直った。AndroidManifest.xmlのandroid:targetSdkVersionのことではなくて、eclipseのプロパティで設定するやつ。
登録:
投稿 (Atom)