android.intent.action.BOOT_COMPLETED

android.intent.action.BOOT_COMPLETEDをintent-filterに設定していても、BOOT_COMPLETEDを検知できないことがある。
ググってみたらこんな記事が。
http://commonsware.com/blog/2011/07/13/boot-completed-regression-confirmed.html
どうやらAndroid3.1かららしい。
インストール後に一度もユーザが起動させていない場合はBOOT_COMPLETEDを拾えないようだ。
インストール直後はstoppedというstateになっているらしく、一度でもユーザが起動しているとstoppedのstateではなくなるみたい。
http://developer.android.com/intl/ja/sdk/android-3.1.html#launchcontrols
セキュリティ上の問題なのかな?

因みにandroid.intent.action.BOOT_COMPLETEDに必須のパーミッションであるandroid.permission.RECEIVE_BOOT_COMPLETEDにバグがある模様。
パーミッションがなくてもandroid.intent.action.BOOT_COMPLETEDはintent-filterに引っかかるとかで、検証したら確かにパーミッション不要でした。
http://code.google.com/p/android/issues/detail?id=14044
ICSでfixされる模様だけどどうなったんだろ?

QuasiDisk

設定を忘れた時のためのメモ。

Mac側でアドホックを作成する。
AdHoc

アドホックに接続する。
AdHocCon

iPhone側でWiFi設定からAdHocに接続する。
iPhoneAdHocCon

QuasiDiskを起動する。
電波マークをタップして設定画面を開く。
Portを「5100」に設定して「FTP Server」を有効にする。
QuasiDisk

Mac側で「ネットワーク環境設定」から「プロキシ」を設定する。
「Webプロキシ(HTTP)」と「保護されたWEBプロキシ(HTTPS)」のプロキシサーバを「[iPhoneの名前].local」、ポートを「6666」に設定する。
「SOCKSプロキシ」を「[iPhoneの名前].local」、ポートを「5050」に設定する。
proxy

以上でテザリングできるはず。

%d人のブロガーが「いいね」をつけました。