MainActivityのあるアプリならMain画面が起動されますが、そうではないService系アプリの場合はどうしたら良いのでしょう?
一番よく取られるやり方はLauncher画面を一つ用意する事です。HelpをMainActivityにすればLauncher一覧に表示され、Marketからも開けます。
が、こんなやり方スマートじゃない!って人のタメの方法が今回の主目的。
そもそもMarketの「開く」で何が呼ばれようとしているのか?
以下のようにIntent Filterを設定しているActivityが呼ばれます。
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.xxxx" /> </intent-filter>
categoryは何かしら設定していれば何でもOK。
つまり、LAUNCHER で無くても良いです。
Launcher一覧に表示されずにMarketで「開く」ボタンを有効化させる
つまり以下のように書けばいい。categoryは何でも良いが、infoが無難。
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.INFO" /> </intent-filter>
使いどころは?
Service系でLauncherに居る必要性が無い場合は、今回の方法を取れば良いと思いますが。特にルールがある訳では無いです。
私の場合はLiveWallpaperアプリで上記対応をしました。壁紙アプリをインストールするたびにLauncherに並ばれても鬱陶しいだけですからね*1。自分的にどうしたいのかで適宜判断すれば良いと思います。
*1:Market上の「開く」を押すとLiveWallpaper一覧に遷移するようにしてる