PreferenceScreen – <намерение … /> – Исключение – FLAG_ACTIVITY_NEW_TASK

Я новичок в разработке Android.

Проект посвящен внедрению AbstractAccountAuthenticator с помощью AbstractThreadedSyncAdapter для синхронизации определенных данных на сервере с поставщиком контента.

Я сделал все, и как добавление учетных записей, так и синхронизация работают без проблем.

Теперь я попытался добавить экран предпочтений, как это было предложено в справочной системе Android (поиск AbstractAccountAuthenticator, это объясняется там) через xml следующим образом:

autenticator.xml:

<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android" android:accountType="typeOfAuthenticator" android:icon="@drawable/icon" android:smallIcon="@drawable/miniIcon" android:label="@string/label" android:accountPreferences="@xml/account_preferences" /> 

Экран Preference-Screen-xml выглядит так:

account_preferences.xml:

 <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="@string/pref_cat_general"> <PreferenceScreen android:key="@string/pref_cat_scr_keygen" android:title="@string/pref_cat_scr_keygen_title" android:summary="@string/pref_cat_scr_keygen_summary"> <intent android:action="android.intent.action.VIEW" android:targetPackage="com.android.clean" android:targetClass="com.android.clean.KeygenAct" /> </PreferenceScreen> </PreferenceCategory> </PreferenceScreen> 

Экран пропущен, как это должно быть, но и это проблема: когда я нажимаю на PreferenceScreen с намерением, это приводит к сбою системы (как в эмуляторе, так и в моем HTC-Desire).

Логкат говорит:

ERROR / AndroidRuntime (18754): android.util.AndroidRuntimeException: для вызова функции startActivity () извне контекста Activity требуется флаг FLAG_ACTIVITY_NEW_TASK. Это действительно то, что вы хотите?

(Целое Logcat на pastebin )

Здесь часть манифеста, где определена деятельность:

 <activity android:name=".KeygenAct"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> 

Весь тестовый код (это мой проект по основным вопросам для поиска проблемы) – это найти на googlecode ( http://code.google.com/p/cleanproject/source/browse/ ) (Eclipse-Project)

Спасибо вам за помощь, Esentian

Ps: keygen не является генератором ключей, это означает больше key_general. Немного грубо выражено;)

У меня была такая же проблема и только что выяснили, что если вы измените свои предпочтения на:

 <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="@string/pref_cat_general"> </PreferenceCategory> <PreferenceScreen android:key="@string/pref_cat_scr_keygen" android:title="@string/pref_cat_scr_keygen_title" android:summary="@string/pref_cat_scr_keygen_summary"> <intent android:action="android.intent.action.VIEW" android:targetPackage="com.android.clean" android:targetClass="com.android.clean.KeygenAct" /> </PreferenceScreen> </PreferenceScreen> 

Затем он работает так, как ожидалось. Это странно, потому что я ожидал бы, что PreferenceCategory будет группировать элементы в качестве своих детей … И почему это приводит к такой несвязанной (?) Ошибке?