Daily Archives: 2011年10月15日

AppLog問題とAndroidのセキュリティ

もうほとぼり冷めたかな。AppLogの件とAndroidのセキュリティ問題についての雑感。
まず、個人的には個人情報を集めるビジネス自体は「悪しき」ものではないと思ってる。まあオプトインが適切に行われていなかった問題については後述するとして、これはもちろんオプトインが適切に行われていたらの話だ。
以下長文なので引き返すなら今だ。

Read more …

HoneycombのOptionsMenuの仕様がクソい

HoneycombではMenuボタンを廃止しActionBarのボタンに移動させる方向で対応が行われている。
ただしtargetSdkVersionを11未満を指定して作られたpre HoneycombアプリはSystemBarにMenuボタンが表示されることで互換性が保たれる。

Read more …

Honeycombのandroid.widget.Scroller

Scrollerを使ってflingを実装する場合、Pre Honeycombでは指定されたVelocityでスクロールした後min/maxで設定した境界面にぶち当たってピタッと止まる。
Honeycombではmin/maxの境界面が近すぎる場合、衝突までの時間で減速して止まるよう勝手に逆算してVelocityを改変してしまう(ようだ、ソースが公開されていないから挙動からしか推測できないが)
このため、Pre Honeycombではスイッピタッと止まるところで、Honeycombではいきなり重油の海を泳いでるみたいに減速して全てが軟着陸になってしまう。
ださい。

(メモ)NotificationのPendingIntentをFLAG_ACTIVITY_SINGLE_TOPで投げる時の挙動

NotificationにPendingIntentを投げる時、

intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

のようにフラグを付けることで既存のActivityに対してIntentを投げることが出来る。
受け取り側のActivityは(onCreateではなく)

protected void onNewIntent(Intent intent)

を適切にオーバーライドしてIntentを受け取る。
1つのアプリが複数の種類のIntentを持つ場合、notifyの第一引数(int id)によって区別される。
PendingIntentを更新したい時はPendingIntent.getActivityの第4引数(int flags)にPendingIntent.FLAG_UPDATE_CURRENTを設定すると同じidの通知を上書き出来る。

Read more …