Android2.2以上の端末で付箋紙やアナログ時計アプリをSDカードにインストールするとウィジェットに表示しないという致命的な障害の事を書きました。

ウィジェットとは上のアナログ時計みたいにAndroidの画面上にアイコンとは別に貼り付ける事の出来る機能です。

この障害は、うちのアプリに限らずウィジェットという機能を使うアプリ全般に起きる現象なので、Androidの仕様と言えます。

うちでウィジェット対応していた付箋紙とアナログ時計はインストール先を”internalOnly”にする事で対応しました。

今日は、メモ帳アプリの機能でアプリをスグに動かせる様、通知バーにショートカット機能を付けていたのですが電源OFF>ONにした時にショートカットが残らないのでプログラムを修正しました。

早速デバッグをした後、実際にGalaxy Tabで動作確認をしていると通知バーに出ない・・・・
よくよく調べてるとメモ帳のインストール先がSDカード。

”もしや?!”と思って調べたら案の定、”SDカードにインストールしたアプリでは通知バーの機能が使えない”という事です。

正確には通知バーという事だけではなく、アプリの中でACTION_BOOT_COMPLETEDという機能を使い、電源がONされたタイミングで通知バーを表示する様にしているのですが、SDカードにインストールすると”ACTION_BOOT_COMPLETED”を受け取らないので、プログラムを書いても意味がないという事です。

これも前述のウィジェット同様Androidの仕様ですね。

Android側としてはプログラムやデータは本体、写真や音楽の様なデータはSDカードに置くのを想定しているんでしょうね。

確かに、むやみにプログラムやデータを簡単に抜き差し出来るSDカードにインストールしない方がセキュリティの面からも安心なんですが、Android 2.2からSDカードにインストール出来るようにした時点で上記のルールが破綻してるのに気づいないのでしょうか。

ウィジェットも含め、こういう仕様はOSのバージョンアップで解決するんでしょうけど、現時点でも2.1ユーザーも数多くいる事から、是非前のバージョンの仕様も変更してもらいたいものです。

【補足:システム起動時にサービスを実行する方法】
システムの起動時にサービスを実行する « Tech Booster