-1

インテント フィルターを使用してアクティビティをサービス アプリケーションにバインドできません。

これは、サービス アプリケーションに接続する必要があるもののスニペットです。

// The connection to the service.
private ServiceConnection connection = new ServiceConnection()
{
    // When the messenger gets bound to the service.
    public void onServiceConnected(ComponentName className, IBinder binder)
    {
        Log.e(TAG, "Attached");
        messenger = new Messenger(binder);
    }

    // When the messenger gets unbound from the service.
    public void onServiceDisconnected(ComponentName className)
    {
        messenger = null;
    }
};

// Bind the service connection with the service application.
private void createServiceBinding()
{
    Log.e(TAG, "binding service.");
    activity.bindService(new Intent(this.activity, TestService.class), this.connection, Context.BIND_AUTO_CREATE);
    this.isBound = true;
}

これは見つけるだけで機能します。Messenger を使用してメッセージを送受信できます。ただし、TestService.class ではなく、サービス アプリケーションのインテント フィルターを使用して activity.bindService を呼び出せるようにする必要があります。

インテント フィルター (たとえば、TestService.class ではなく com.example.testapplication.TestService) を使用してアクティビティをサービス アプリケーションにバインドするにはどうすればよいですか?

前もって感謝します!

4

1 に答える 1

2

ただし、TestService.class ではなく、サービス アプリケーションのインテント フィルターを使用して activity.bindService を呼び出せるようにする必要があります。

より正確には、サービスの と一致するで呼び出せるようにする必要があります。bindService()Intent<intent-filter>

サービスにバインドするサード パーティのアプリを計画している場合を除き、既存のアプローチに固執し<intent-filter>、サービスから を削除してください。これは必要ではなく (ご覧のとおり)、デフォルトでサービスをエクスポートします。

インテント フィルター (たとえば、TestService.class ではなく com.example.testapplication.TestService) を使用してアクティビティをサービス アプリケーションにバインドするにはどうすればよいですか?

別のIntentコンストラクターと、おそらくIntentオブジェクトの他のセッターを使用して、 に一致するように構成します<intent-filter>。を提供しないことを決定したため、<intent-filter>具体的な指示を出すことはできません。

たとえば、次の<intent-filter>ように見えたとします。

        <intent-filter>
            <action android:name="com.troje.this.is.probably.a.bad.IDEA"/>
        </intent-filter>

次に、サービスにバインドするために使用するためにIntent作成されます。new Intent("com.troje.this.is.probably.a.bad.IDEA")

于 2012-10-10T21:26:50.037 に答える