1

アプリに AccountManager コードを含めて、ユーザーが設定アプリケーション内からアカウントを作成および管理できるようにしました。

account-authenticator 定義内の「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 から起動されたこのインテントを新しいタスクとしてマークするにはどうすればよいですか?

4

1 に答える 1

6

私の問題は、設定画面を 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>

PreferenceCategory 内にその PreferenceScreen をネストしても機能せず、上記のエラーが発生します。

于 2013-01-15T00:26:16.190 に答える