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,所以看不到菜单图标。
我从一个开源项目中得到了这个清单文件
<?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,所以看不到菜单图标。