2

PreferenceScreen からブロードキャスト インテントを直接送信することは可能ですか?

たとえば、次のようなことをしたいと思います。

<PreferenceScreen android:title="Enable">
<intent android:action="com.otherapp.ENABLE" />
</PreferenceScreen>

しかし、これを試してみると、アプリの FC は ActivityNotFoundException を伴います。

ところで、レシーバーは単純に次のように定義されます。

<receiver android:name=".Receiver">
<intent-filter>
<action android:name="com.otherapp.ENABLE" />
</intent-filter>
</receiver>

このブロードキャスト レシーバーは正常に動作することがテストされていますが、PreferenceScreen からではありません。

ティア!

4

3 に答える 3

0

プリファレンスは、インテントをブロードキャスト レシーバーではなく、アクティビティに送信します。インテントをブロードキャスト レシーバーに送信する場合は、インテントをブロードキャスト レシーバーに転送するアクティビティを作成します。

public class ForwardingActivity extends Activity {
    @Override
    protected void onStart() {
        super.onStart();
        Intent incomingIntent = getIntent();
        Intent outgoingIntent = new Intent(incomingIntent);
        outgoingIntent.setComponent(null); // unblock recipients
        sendBroadcast(outgoingIntent);
    }
}

UIなし

    <activity
        android:name=".ForwardingActivity "
        android:theme="@android:style/Theme.NoDisplay" >
        <intent-filter>
            <action android:name="com.otherapp.ENABLE" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
于 2013-03-14T22:24:14.477 に答える
-2

マニフェストにカテゴリandroid.intent.category.DEFAULTを追加する必要があると思います。intent-filter次のようになります。

<receiver android:name=".Receiver">
    <intent-filter>
        <action android:name="com.otherapp.ENABLE" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</receiver>
于 2012-05-21T22:31:43.560 に答える