Android

対ガラパゴスAndroidのTips

More than 3 years have passed since last update.


概要

メーカーが独自の仕様を盛っているAndroidにはどこかしらに謎の仕様や不具合が存在します

残念ながらAndroidアプリ開発者はこの事実を受け入れて開発を行わないといけません

本ページには避けなければいけないそれらの謎をまとめています

発見、もしくは思い出したらドンドン追記していきます

編集リクエストもお待ちしております


昔のXperia


bottomRightRadiusとbottomLeftRadiusが逆になっている

昔のXperiaでは android:bottomRightRadius と android:bottomLeftRadius が逆になっています

つまり四つ角の左上・左下にRadiusを設定しようとすると、左上・右下にRadiusが設定されるということです

もちろんその他の端末では正常に左上・左下とRadiusが設定されます


ごく一部のSHARP端末


CharSequenceをStringにCastしようとすると落ちる

ごく一部のSHARP端末ではCharSequenceをStringにCastしようとすると ClassCastException が発生します

toString() でコンバートするようにチームで徹底すると幸せになれます


Galaxy


EditTextが9000文字までしか入れられない

ソース:http://pandora.sblo.jp/article/44144389.html

GalaxySはすべてのViewに自動で9000文字をmaxに設定しています

android:maxLengthをInteger#MAX_VALUEにするか、@nullを入れると無制限にできます


SharedPreferencesが読めなくなる状況が生まれる

アプリのプロセスのユーザIDは使いまわされることと、GalaxySではSharedPreferencesのファイルの実体が通常とは別のところに保存されること、そしてアプリのアンインストール時にそのファイルが削除されないことの合わせ技で、再インストール後に残骸ファイルを作ったユーザIDとアクセスしているアプリのユーザIDが異なる状況が生まれ、ファイルににアクセスができなくなり、結果SharedPreferencesが読み書きできなくなります


WebViewでSIGSEGVする

絵文字関連でバグが有るらしい(ということまではメモリダンプから分かりましたがどうしたら良いか等不明…)。バグを踏むとSIGSEGVでアプリが静かに落ちます


HTC


Gsonが使えない

ソース:https://code.google.com/p/google-gson/issues/detail?id=255

アプリでGsonを使うと、アプリ起動時にクラスローダ上に何故か2つのGsonがロードされ、片方(アプリ側)がVerifyErrorになり、結果Gsonに依存するクラスを使用した時点でクラッシュします

Gsonのパッケージを無理やり変えてやる必要があります


低解像度の端末


View, Drawableにおいてサイズを0.7dp未満に指定すると描画されない

低解像度の端末において View や Drawable で0.7dp未満にサイズを指定すると描画されない端末がある