1

Doc 说https://developer.android.com/reference/android/content/Intent.html#ACTION_MAIN 是一个入口点。

示例代码:

 <activity android:name="org.A.A"
            android:theme="@style/NoTitle"
            android:screenOrientation="behind"
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>

        <activity android:name="org.A.C"
            android:theme="@style/NoTitle"
            android:launchMode="singleTop"
            android:screenOrientation="behind">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>

        <activity android:name="org.A.B"
            android:theme="@style/NoTitle"
            android:launchMode="singleTop"
            android:screenOrientation="behind">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
        </activity>

1)所以使用 android.intent.action.ACTION_MAIN 作为父组件(父组件我的意思是活动或接收器或服务)的入口点?

2)如果是,从哪里进入,因为没有提到 CATEGORY。

4

2 回答 2

1

Android 应用程序由不同的组件组成。例如ActivityServiceBroadcastReceiverContentProvider,每个组件都可以作为应用程序的入口点

让我们以活动为例,您已经在应用程序中定义了一个活动,并执行以下操作

<intent-filter>
     <action android:name="com.yourapp.SOME_ACTION" />
     <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

我按照以下意图在我的应用程序中启动一项活动。

Intent intent = new Intent("com.yourapp.SOME_ACTION"); // same action
startActivity(intent);

现在会发生什么?系统将搜索具有com.yourapp.SOME_ACTION操作的活动,如果找到一个(在当前情况下,它将是您com.yourapp.SOME_ACTION在应用程序中创建的活动),它将启动您的应用程序(如果尚未启动)并将在您的应用程序。

看,现在我可以使用with进入你的应用了。在其他组件的情况下也会发生同样的事情。Activitycom.yourapp.SOME_ACTION

于 2017-01-07T17:03:34.050 回答
0

具有 MAIN 动作的 Activity 将成为应用程序的入口点。如果你有一个很好,如果不止一个,那么你可以有多个活动,通过这些活动你可以进入应用程序。

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>

但是,如果您为活动提供了 CATEGORY,它将为该入口点创建启动器。

       <category android:name="android.intent.category.LAUNCHER" />

假设两个活动同时具有主操作和类别作为启动器,将创建两个应用程序图标,一个将有一个活动作为入口点,第二个将有另一个作为入口点。

    <intent-filter>
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
于 2017-01-07T17:16:35.140 回答