読者です 読者をやめる 読者になる 読者になる

hyoromoのブログ

iOS/AndroidもしくはCocos2dxネタを書いています

AndroidMarketのアプリ詳細から「開く」で起動させるには

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一覧に遷移するようにしてる