当前位置: 首页 > 知识库问答 >
问题:

无法启动接收器Android.Support.v4.Media.Session.MediaButtonReceiver

淳于博文
2023-03-14

我在我的崩溃,有没有人面临这样的问题?

Thx,提前

异常java.lang.RuntimeException:无法启动接收方android.support.v4.media.session.mediabuttonreceiver:java.illegalstateException:找不到任何处理[REDACTED_DOMAIN_NAME]_button的服务或媒体浏览器服务实现

(ZygoTeinit.java:1120)由java.lang.IllegalStateException引起:找不到任何处理[REDACTED_DOMAIN_NAME]_button的服务或媒体浏览器服务实现android.support.v4.media.session.mediabuttonreceiver.onreceive(Mediabuttonreceiver.java:97)android.app.activitythread.handlereceiver(activitythread.java:3636)android.app.activitythread.access$2000

共有2个答案

王才英
2023-03-14

Google官方文档的解释:这个类假设你的应用程序中有一个服务通过MediaSessionCompat控制媒体播放。一旦MediaButtonReceiver接收到密钥事件,该类将尝试找到一个可以依次处理Intent.Action_Media_Button和MediaBrowserServiceCompat的服务。如果找到适当的服务,该类将密钥事件转发给该服务。如果两者都不可用或找到多个有效的服务/媒体浏览器服务,则将引发IllegalStateException。因此,您的应用程序应该有以下服务之一,以正确获取关键事件。

您可以通过以下方式解决:

1.服务可以通过包含处理intent.action_media_button的intent筛选器来接收关键事件:

<service android:name="com.example.android.MediaPlaybackService" >
   <intent-filter>
     <action android:name="android.intent.action.MEDIA_BUTTON" />
   </intent-filter>
 </service>

然后可以在service.onStartCommand(Intent,int,int)中处理事件,方法是调用handleIntent(MediaSessionCompat,Intent),传入当前的MediaSessionCompat:

private MediaSessionCompat mMediaSessionCompat = ...;

public int onStartCommand(Intent intent, int flags, int startId) {
   MediaButtonReceiver.handleIntent(mMediaSessionCompat, intent);
   return super.onStartCommand(intent, flags, startId);
 }

这可以确保根据传入的KeyEvent触发对MediaSessionCompat.Callback的正确回调。

2.MediaBrowSerService

如果您的应用程序中已经有一个MediaBrowserServiceCompat,MediaButtonReceiver默认情况下会将接收到的关键事件传递给MediaBrowserServiceCompat。您可以在MediaSessionCompat.Callback中处理它们。

赵光赫
2023-03-14

如果使用androidX依赖项更新项目,则必须导入

<receiver android:name="androidx.media.session.MediaButtonReceiver">
   <intent-filter>
      <action android:name="android.intent.action.MEDIA_BUTTON"/>
   </intent-filter>
</receiver>
 类似资料:
  • 我在试着让我的弹性搜索下沉并运行。然而,我得到了以下错误,并正在耗尽如何修复它的想法。任何帮助都很感激。以下是错误: 我运行的是CDH 5.3和elasticsearch 1.4.2

  • (与我刚刚发布的另一个问题略有不同,如果这违反了规则,请道歉) 在我的活动1中,我正在设置一些共享首选项,接下来我将通过意图启动另一个活动2,并从中设置一些文本视图。。。这一切都很好。 这就是我的问题。在我的第一个活动1中,我有一个带有挂起意图的警报管理器,这个挂起意图是一个用于锁定手机的广播接收器,然后启动活动2。这个活动和上面提到的第二个活动是一样的。但是,当此活动从启动时,没有任何文本视图从

  • 我已经将Android应用程序上传到playstore。在第一次下载时,它会崩溃,但在那之后,它工作正常。它将错误显示为无法实例化接收器com。谷歌。Android应用程序。分析。由java引起的AnalyticsReceiver。lang.ClassNotFoundException:未找到类“com.google.android.apps.analytics.analytics.Analyti

  • 对于使用kafka的Spark流,我们使用Directstream,这是一种无接收器的方法,并将kafka分区映射到Spark RDD分区。目前,我们有一个应用程序,其中我们使用Kafka直接方法并在RDBMS中维护我们的on偏移, 我们有类似的Kinesis吗?当我阅读火花-Kinesis集成的留档时,感觉检查点有所不同。以下是我遇到的一些问题 使用kinesis流是否将kinesis碎片映射到

  • 我的应用程序的MainActivity从用户那里获取一些数据来计算他/她的BMI和BMR,并将这些数据用于应用程序的主要部分,即另一个名为DailyActivity的活动。我希望这样,用户第一次启动应用程序时,它会要求提供数据。但在第一次之后,每次用户启动应用程序时,都应使用之前输入的数据直接启动DailyActivity。(按下后退按钮也不应显示MainActivity)。我如何实现这一点?

  • 我通过C API使用LXC,并简单地复制和粘贴了示例代码(如链接所示,但用我自己的函数名替换了)。然后从程序中的另一个代码块中调用它,我无法使容器正常启动。 调用只会返回false。如果我将第二个参数更改为start为0(意味着应该使用而不是/sbin/init),则start“成功”,但容器状态立即设置为,因此我无法连接到容器。 正在尝试通过设置获取日志: 只生成空文件。 想到这可能与我看到的另