我似乎无法捕获ACTION_SCO_AUDIO_STATE_CHANGED意图为什么?

时间:2010-12-15 19:59:01

标签: android android-manifest

我正在尝试捕获ACTION_SCO_AUDIO_STATE_CHANGED的状态,具体如下: http://developer.android.com/reference/android/media/AudioManager.html#ACTION_SCO_AUDIO_STATE_CHANGED

我已在我的清单上注册了意图,但在连接蓝牙设备时我没有得到任何东西。我需要的任何特殊许可或其他什么?

清单:

    <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>

我无法从BOND_STATE_CHANGED,SCO_AUDIO_STATE_CHANGED或ACL_DISCONNECT_REQUESTED获得任何调用。我收到的其他意图就好了。

谢谢,

-Jona

2 个答案:

答案 0 :(得分:1)

这可能是使用Manifest无法接收的广播意图。您必须设置BroadcastReceiver对象并注册它以接收广播。接收方必须处于活动状态才能接收意图。

有些广播意图像这样工作,而其他人则被允许通过清单捕获。

另一种可能性是接收方需要您未请求的许可。

这是关于Context.registerReceiver()的SDK的重要说明。 注意:无法从BroadcastReceiver组件调用此方法;也就是说,来自在应用程序清单中声明的​​BroadcastReceiver。但是,可以从另一个已经在运行时使用registerReceiver(BroadcastReceiver,IntentFilter)注册的BroadcastReceiver调用此方法,因为这样的已注册BroadcastReceiver的生命周期与注册它的对象相关联

答案 1 :(得分:-1)

   <uses-permission android:name="android.permission.BROADCAST_STICKY"