从帐户身份验证器accountPreferences屏幕启动Intent?

Mat*_*uno 1 settings preferenceactivity android-preferences accountmanager

我已在我的应用程序中包含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)
Run Code Online (Sandbox Code Playgroud)

我在PreferenceScreen中的意图定义为:

<intent
    android:action="android.intent.action.VIEW"
    android:targetPackage="com.myapp.android"
    android:targetClass="com.myapp.android.activities.AccountForwardingActivity"/>
Run Code Online (Sandbox Code Playgroud)

并且目标活动也按照您的预期定义,除了intent-filter之外没有特殊标志来匹配该操作(我还列出了其他自定义操作).

<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>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?如何将从Settings.apk启动的此意图标记为新任务?

Mat*_*uno 6

我的问题是将Preference Screens放在我的PreferenceCategory中.

这很好用:

<PreferenceCategory android:title="General Settings" />
<PreferenceScreen
    android:title="Account Settings"
    android:summary="Favorites, Orders, and more.">
    <intent
        android:action="android.intent.action.VIEW"
        android:targetPackage="com.myapp.android"
        android:targetClass="com.myapp.android.activities.AccountForwardingActivity"/>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

将PreferenceScreen嵌套在PreferenceCategory中不起作用,并导致上述错误.