1. ホーム

android.intent.action.MAIN と android.intent.category.LAUNCHER を理解する。

2022-02-18 15:37:13

sundyさんの動画 "LLY110426_Android App Launcher" を拝見しましたが、アプリ内の AndroidManifest.xml の宣言で特定されるアプリ情報を取得し、アプリをロードしてユーザーに表示する Activity "launcher" について書かれています。

ここで、android.intent.action.MAIN と android.intent.category.LAUNCHER は、アプリがランチャーにどのように表示されるかを決定します。

どちらも以下のような目的で使用されます。

      android.intent.action.MAIN は、アプリがどの Activity を最初に起動するかを決定します。

       android.intent.category.LAUNCHER は、アプリがプログラム一覧に表示されるかどうかを決定します。

      だから

               アクティビティが1つしかないアプリで、android.intent.action.MAINだけを宣言し、android.intent.category.LAUNCHERを宣言しないと、eclipseはエラーで実行されてしまうのです。


      android.intent.action.MAIN と android.intent.category.LAUNCHER の両方を宣言しているアクティビティが複数ある場合はどうなりますか?------------------ は、デスクトップに複数のアイコンが表示されます。

検証は以下の通りです。新規プロジェクトを作成し、AndroidManifest.xmlを以下のようにします。

<?xml version="1.0" encoding="utf-8"? >
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android4"
    android:versionCode="1"
    android:versionName="1.0" >


    <use-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />


    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.android4.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.example.android4.MainActivity_Copy"
            android:icon="@android:drawable/btn_star" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>


</manifest>

The desktop displays the results as.




The desktop displays the results as.

<イグ