2010-12-15 2 views
2

Ich versuche zur Zeit Staaten für ACTION_SCO_AUDIO_STATE_CHANGED zu fangen, wie angegeben von: http://developer.android.com/reference/android/media/AudioManager.html#ACTION_SCO_AUDIO_STATE_CHANGEDIch kann nicht scheinen ACTION_SCO_AUDIO_STATE_CHANGED Absicht warum?

Ich habe die Absicht, auf meinem Manifest registriert, aber ich bin nicht alles bekommen, wenn zu einem Bluetooth-Gerät angeschlossen wird. Irgendeine bestimmte Erlaubnis, die ich brauche oder etwas?

Manifest:

<receiver android:name="com.app.receiver.BluetoothReceiver"> 
     <intent-filter> 
      <action android:name="android.media.SCO_AUDIO_STATE_CHANGED" /> 
      <action android:name="android.bluetooth.device.action.ACL_CONNECTED" /> 
      <action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" /> 
      <action android:name="android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED" /> 
      <action android:name="android.bluetooth.device.action.BOND_STATE_CHANGED" /> 
     </intent-filter> 
    </receiver> 

Ich kann keine der Anrufe von BOND_STATE_CHANGED, SCO_AUDIO_STATE_CHANGED oder ACL_DISCONNECT_REQUESTED bekommen. Die anderen Absichten, die ich empfange, sind gut.

Danke,

-Jona

+0

Können Sie Ihr Manifest dort posten, wo Sie den Empfänger registrieren? – EboMike

+0

Ich denke, ich bin so verloren wie alle ... – Jona

Antwort

1

Es ist wahrscheinlich eine Sendung Absicht, die nicht das Manifest mit empfangen werden können. Sie müssen ein BroadcastReceiver-Objekt einrichten und es registrieren, um die Übertragung zu empfangen. Der Empfänger muss aktiv sein, um die Absicht zu erhalten.

Einige Broadcast-Absichten funktionieren so, während andere über das Manifest abgefangen werden dürfen.

Die andere Möglichkeit ist, dass der Empfänger eine Berechtigung benötigt, die Sie nicht anfordern.

Dies ist eine wichtige Anmerkung aus dem SDK über Context.registerReceiver(). Hinweis: Diese Methode kann nicht von einer BroadcastReceiver-Komponente aus aufgerufen werden. das heißt von einem BroadcastReceiver, der im Manifest einer Anwendung deklariert ist. Es ist in Ordnung, aber diese Methode von einem anderen BroadcastReceiver zu nennen, die sich mit registerReceiver (BroadcastReceiver, IntentFilter) zur Laufzeit registriert wurde, da die Lebensdauer eines solchen registrierten BroadcastReceiver an das Objekt gebunden ist, dass es

-1
<uses-permission android:name="android.permission.BROADCAST_STICKY" 
registriert
+0

Sticky ist überhaupt nicht erforderlich. – Jona