【Android】なぜかランチャーにアイコンが表示されない

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE"/>
                <data android:scheme="appname" android:host="data" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

MAIN と LAUNCHERはもちろん指定済み。
なぜかランチャーにアイコンが表示されない。

Android - 作成したアプリを端末へインストール後 開く が選択できない場合 - Qiita

AndroidManifest.xmlでActivityに対してintent-filterを設定し 起動直後のActivityを設定しますが、その際android.intent.action.MAINとandroid.intent.category.LAUNCHERだけは独立させる必要があります。

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE"/>
                <data android:scheme="appname" android:host="data" />
            </intent-filter>

つまり、こうしないとダメだったらしい ・ω・

なんでだろう?

4. インテントとインテントフィルタ - ソフトウェア技術ドキュメントを勝手に翻訳

 このフィルタで DEFAULT カテゴリが提供されている点にも注目してください。ここにあるのは、Context.startActivity() と Activity.startActivityForResult() メソッドがすべてのインテントを DEFAULT カテゴリを含んでいるかのように振る舞うことがその理由です。但し、以下の例外がふたつだけあります。

・明示的にターゲットアクティビティを指名するインテント
・MAIN アクションと LAUNCHER カテゴリで構成されたインテント

したがって、DEFAULT カテゴリはMAIN アクションと LAUNCHER カテゴリを含めたフィルタを除くすべてのフィルタで 必須 です ( インテントフィルタは明示インテントでは調査されません ) 。

こういうことらしい。 覚えた

おすすめ

1件の返信

  1. より:

    Android – 作成したアプリを端末へインストール後 開く が選択できない場合 – Qiita
    へのリンクがおかすぃです
    //qiita.com/mmurasawa/items/fa712be120be872cadda

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です