まめーじぇんと@Tech

技術ネタに関して (Android, GAE, Angular). Twitter: @mame01122

Android

Androidで不要な(意図しない)ストレージと連絡先のパーミッションが要求される

発端 去年作っていたAppをGoogle Playにあげようとした際、 何故かストレージと連絡先のパーミッションが要求されていることに気づきました。 でもAndroidManifestに書いているパーミッションは ・INTERNET ・ACCESS_NETWORK_STATE ・WAKE_LOCK ・C2D_MESSAG…

GCM PushのInstanceIDListenerService (onTokenRefresh)を手動でテストする方法

GCMのPush通知を実装しているAndroidアプリであればトークンが切り替わったタイミングを知ることができる InstanceIDListenerServiceを継承したクラスを作ると思いますが、 今回はそのテスト方法に関して。 そもそもの背景 InstanceIDListenerServiceのonTok…

Android Studioでステップ数を数える方法

Android Studioでステップ数を数える方法が(少なくとも日本語のサイトは)あまり見つからなかったので、その方法を記載。ステップ数はコードを書く上でモチベーションを上げる重要な要素の1つだと思うので(笑)、書いておきたいと思います。 1: プラグイン…

SQLCipher利用時のProguardについて

AndroidでProguardを使うときは、基本的にproject.propertiesの proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt のコメントを外し、Eclipseであればプロジェクトを選択し、 Android Tools > Export Signed Applicati…

Androidのボタン二度押しを防ぐ

AndroidのButtonのonClickが二度呼ばれてしまう問題の対処について。 今作っているサービスのClient side (Android)で、 サーバ通信を伴う部分があり、その契機の1つがButtonがClickされたときになっています。 βテストをやっている中で、 「ボタンが二度押…

Base64エンコード/デコードでNoSuchMethodError on Android

Base64のエンコード/デコードを使ったときの話。Android + GAEでBase64エンコード/デコードしたときに、 org.apache.commons.codec.binary.Base64をインポートして使っていたら、 GAEでは問題ない一方で、Androidだと、 Base64.encodeBase64String();と Base…

AndroidでSSLを使う際のSecureRandomの問題点

AndroidでSSLを使うときに、 SSLContextを使うことがあるかと思いますが、 このSSLContextのinitで使えるSecureRandomに脆弱性があるらしい、という話です。出元は下記。 Some SecureRandom Thoughts | Android Developers Blogここによれば、SecureRandomは…

ローカルに保存されているpng画像をBitmapとして取得

前回の記事の続きで、今回は、 ローカルに保存されているpng画像をBitmapとして取得する方法。 public static Bitmap readBitmapData(Context context, String fileName) { Bitmap data = null; if (fileName != null) { try { InputStream inputstream = co…

Bitmapをpng画像として保存

Bitmapをpng画像として保存する方法。 public static boolean storeBitmap(Context context, Bitmap bitmap, String fileName) { if (bitmap != null && fileName != null) { ByteArrayOutputStream output = new ByteArrayOutputStream(); bitmap.compress(…

Androidの自動テストで使うReflectionのUtilクラス

Androidの自動テストを書いていて、 Reflectionを使ってprivateフィールドにアクセスする機会があったので、メモ。 public class ReflectionUtil { public static <T> Object getValue(Class<T> className, String fieldName, Object targetObject) { Object resul</t></t>…