Java 任何应用程序是否可以使用“操作名称”来广播意图;android.intent.action.MEDIA“按钮”;
我的应用程序注册了intent(Java 任何应用程序是否可以使用“操作名称”来广播意图;android.intent.action.MEDIA“按钮”;,java,android,android-intent,Java,Android,Android Intent,我的应用程序注册了intent(“android.intent.action.MEDIA_BUTTON”)来处理使用以下代码按下的有线耳机键 <receiver android:name=".HeadsetEventReceiver" android:enabled="true" > <intent-filter android:priority="2147483647" > <action android:name="and
“android.intent.action.MEDIA_BUTTON”
)来处理使用以下代码按下的有线耳机键
<receiver
android:name=".HeadsetEventReceiver"
android:enabled="true" >
<intent-filter android:priority="2147483647" >
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
我的应用程序正在接收此意图并处理此数据,就好像它实际上是由于耳机按键而广播的一样
我的查询是当任何应用程序尝试发送带有本机意图的广播时(例如:
“android.intent.action.BOOT\u COMPLETED”
)抛出securityException。为什么它不适用于上述意图(“android.Intent.action.MEDIA_BUTTON”
)。因为4.0或更高版本android文档说明必须使用RegisterMaidButtoneVentreceiver
注册意图动作。如果不注册到RegisterDiaButtoneVentreceiver
,您将不会收到广播消息
下面是记录在案的代码
因此,如果您使用的是
registerDiaButtoneVentreceiver
,那么您将获得广播,否则您将无法获得。因为4.0或更高版本的Android文档说明您必须使用registerDiaButtoneVentreceiver
来注册意图操作。如果不注册到RegisterDiaButtoneVentreceiver
,您将不会收到广播消息
下面是记录在案的代码
因此,如果您使用的是
RegisterMaidiaButtoneVentreceiver
,那么您将获得广播,否则您将无法获得广播。您使用的是什么api???因为它不会发生在api>=15中。我使用的是api 21。我的问题是,当应用程序试图发送带有意图的广播(“android.Intent.action.MEDIA_按钮”)时,为什么不抛出securityException?。它与侦听mediaButton事件侦听器无关。您使用的是什么api???因为它不会发生在api>=15中。我使用的是api 21。我的问题是,当应用程序试图发送带有意图的广播(“android.Intent.action.MEDIA_按钮”)时,为什么不抛出securityException?。它与侦听mediaButton事件侦听器无关。我使用的是api 21。我的问题是,当应用程序试图发送带有意图的广播(“android.Intent.action.MEDIA_按钮”)时,为什么不抛出securityException?。它与侦听mediaButton事件侦听器无关。它不会引发异常,因为它们已定义了要广播相同内容的接收器,所以这对它们来说不是问题。我想是的。我正在使用API21。我的问题是,当应用程序试图发送带有意图的广播(“android.Intent.action.MEDIA_按钮”)时,为什么不抛出securityException?。它与侦听mediaButton事件侦听器无关。它不会引发异常,因为它们已定义了要广播相同内容的接收器,所以这对它们来说不是问题。我想是的。
Intent newIntent = new Intent("android.intent.action.MEDIA_BUTTON") ;
KeyEvent event = new KeyEvent(System.currentTimeMillis(), System.currentTimeMillis(), KeyEvent.ACTION_DOWN, 79, 1, 1, 1, 1, 1, InputDevice.SOURCE_TOUCHPAD);
newIntent.putExtra(Intent.EXTRA_KEY_EVENT, event);
getApplicationContext().sendBroadcast(newIntent);
AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE);
...
// Start listening for button presses
am.registerMediaButtonEventReceiver(RemoteControlReceiver);
...
// Stop listening for button presses
am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);