我在我的应用程序中包含了 AccountManager 代码,以使用户能够从他们的设置应用程序中创建和管理他们的帐户。
我在我的帐户身份验证器定义中的“accountPreferences”首选项文件中进行了链接,这些选项在“设置”>“帐户”>“我的应用程序”屏幕中正确显示。当我点击其中一个时,我没有得到我链接的活动,而是得到:
01-14 14:47:27.304: ERROR/AndroidRuntime(27708): FATAL EXCEPTION: main
android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
at android.app.ContextImpl.startActivity(ContextImpl.java:944)
at android.app.ContextImpl.startActivity(ContextImpl.java:931)
at android.preference.Preference.performClick(Preference.java:967)
at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:215)
我将 PreferenceScreen 中的意图定义为:
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.myapp.android"
android:targetClass="com.myapp.android.activities.AccountForwardingActivity"/>
并且目标活动也按照您的预期定义,除了意图过滤器之外没有其他特殊标志来匹配该操作(我还列出了其他自定义操作)。
<activity android:name=".activities.AccountForwardingActivity"
android:theme="@style/Theme.MyApp"
android:launchMode="singleTask">
<intent-filter>
<action android:name="com.myapp.android.PAYMENT_TYPES"/>
<action android:name="com.myapp.android.ADDRESS_LIST"/>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
我究竟做错了什么?如何将这个从 Settings.apk 启动的意图标记为新任务?