Android 清单:没有默认值 activity?

Android Manifest: no default activity?

我从一个开源项目中得到了这个清单文件

<?xml version="1.0" encoding="utf-8"?>

<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="20" />

<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />

<application
    android:allowBackup="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    <service
        android:name="org.gege.caldavsyncadapter.syncadapter.SyncService"
        android:exported="true">
        <intent-filter>
            <action android:name="android.content.SyncAdapter" />
        </intent-filter>

        <meta-data
            android:name="android.content.SyncAdapter"
            android:resource="@xml/syncadapter" />
    </service>
    <service
        android:name="org.gege.caldavsyncadapter.authenticator.AuthenticationService"
        android:exported="true">
        <intent-filter>
            <action android:name="android.accounts.AccountAuthenticator" />
        </intent-filter>

        <meta-data
            android:name="android.accounts.AccountAuthenticator"
            android:resource="@xml/authenticator" />
    </service>

    <activity
        android:name="org.gege.caldavsyncadapter.authenticator.AuthenticatorActivity"
        android:label="@string/title_activity_authenticator"
        android:windowSoftInputMode="adjustResize|stateVisible"/>
</application>

我对那个清单有点疑惑。它有两个服务和一个activity。 activity 未标记为默认 activity。当我 运行 我 phone 上的项目时,它没有显示任何启动应用程序的图标,应用程序也没有自动启动。

这样的清单有意义吗? Android OS 基于这样的清单是什么?

Does a manifest like this make sense?

是的,因为它声明了一个 sync adapter 一个验证器。

通常,此类清单在图书馆项目中也很有意义。然后使用该库的应用程序项目提供主启动器activity。构建过程将清单文件合并在一起,因此每个 APK 都有一个清单。

What does the Android OS based on such a manifest?

因此,它具有入口点,例如 activity 和声明的两个服务。通常,您通过 Intent 调用这些入口点。这些服务被声明为一个同步适配器和一个验证器,因此它们可以被框架调用。 activity 可能由身份验证器服务出于 UI 目的调用。

因为没有主启动器activity,所以看不到菜单图标。