2012年2月24日金曜日

debug.keystore を新しくしたらパスワードが違うと怒られる。

debug.keystoreは下記のようなコマンドで作れる。
 keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000 -dname "CN=Android Debug,O=Android,C=US
 (http://magpad.jugem.jp/?eid=151より)

ここでパスワードの入力を求められるのだが、自由に設定してしまうと、下記のように怒られてしまう。
 keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect

実はパスワードはandroidでなければならな。
パスワードをandroidにして作りなおせばOK。


Macでエスケープ文字

Mac + Eclipse + Androidで開発していたらエスケープができなくてハマった。
簡略するとこんなコードで怒られる。
String str = "¥""; 

実はMacでは¥と\はちゃんと区別される。
option + ¥ で \ が打てるのである。
という訳で正解はこうなる。

String str = "\""; 
やられた。
ちなみに文字コード的には0x5C に円記号が、0x80 にバックスラッシュが割り当てられているとのこと。へー。

rawQueryでInsertできない

SQLiteDatabaseにはrawQueryというメンバがいます。
一見名前の通り指定したクエリを実行してくれるようにも思えますが、このメソッドはselect専用だそうです。
insertしたい場合はexecSQLを使いましょう。

2012年2月21日火曜日

AndroidのNotificationでスクロールアニメを表示させる/させない

Notificationを表示させるサンプルに以下のようなものがある。

Notification notification = new Notification();
notification.icon = R.drawable.icon;
notification.when = System.currentTimeMillis();
notification.tickerText = "ticker text "; // これを指定するとアニメーション発生
notificationManager.notify(R.string.app_name, notification);

この例のように、tickerTextに値を指定するとNotificationを発生させた時に強調表示がされ、Notificationbarがスクロールしたような動きを見せたうえtickerTextで指定したテキストが表示される。

逆に言えば、これを指定しなければこのアニメーションは発生しない。
よくサンプルでtickerTextを指定するコンストラクタを使ったりするので、デフォルトでアニメ表示になっている為に困ってる人がいるかもしれない。(自分がそうだった)
そんな時はtickerTextの指定をしなければ良い。

以上

Android の Marketアプリを手動でアップデートする。

※自己責任でお願いします。

M7003Bのマーケットで表示されるアプリが激減して困っていた。
ほんと数える程しか無い状態に・・・。

マーケットが古いのが気になっていたのでアップデートしたらなんとかなるのではないかと思ってやってみた。

端末で単にapkをDLしてインストールしようとしてもダメ。
「インストールは完了していません」と表示されて失敗する。

そこで試した手順は以下。
/system/appにぶち込みます。

※要rootです。また、ADBは導入済みとします。

1.以下のリンクからapkをDL
http://www.mediafire.com/?vdocx41t37rnn6y

2.念のため既存のマーケットapkをバックアップ
$ adb shell
$ mv /system/app/Vending.apk <backup dir>

3.DLしたapkを/system/appにぶちこむ。
> adb push com.android.vending-1.apk /system/app/Vending.apk

以上