You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

继承CastRemoteDisplayLocalService后onCreatePresentation未调用原因咨询

解决CastRemoteDisplayLocalService的onCreatePresentation未触发问题

先直接回应你的核心疑问:Google Cast的App ID确实和注册时的包名强绑定,你用了示例的App ID但自己的包名不同,这极有可能是导致会话无法建立、进而onCreatePresentation不触发的关键原因。接下来我会分点梳理所有可能的原因,帮你逐一排查:

  • App ID与包名不匹配:在Google Cast开发者控制台创建App ID时,必须指定对应Android应用的包名,只有包名完全匹配的应用才能通过该App ID成功建立Cast会话。你使用示例的App ID但包名不同,Cast服务会直接拒绝你的连接请求,自然不会触发后续的presentation创建流程。建议你去开发者控制台创建自己的App ID,并绑定当前应用的包名。

  • 服务未正确注册到Manifest:检查你的AndroidManifest.xml,是否正确注册了自定义的CastRemoteDisplayLocalService子类?需要添加如下配置:

    <service
        android:name=".YourCustomCastService"
        android:exported="true">
        <intent-filter>
            <action android:name="com.google.android.gms.cast.REMOTE_DISPLAY_SERVICE" />
        </intent-filter>
    </service>
    

    缺少这个注册的话,系统无法识别你的服务,也就不会回调相关方法。

  • 会话初始化流程有误:onCreatePresentation是在Cast远程显示会话成功建立后才会触发的。你需要确认是否正确完成了会话初始化:

    1. 初始化CastRemoteDisplaySession实例
    2. 调用startSession()方法,并且确保会话启动成功(可以通过CastRemoteDisplaySession.Callback的onSessionStarted回调确认)
      如果会话没成功启动,自然不会走到创建presentation的步骤。
  • 权限缺失:确保你的Manifest中声明了必要的权限:

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="com.google.android.gms.permission.CAST_REMOTE_DISPLAY" />
    

    缺少这些权限会导致无法发现或连接Cast设备。

  • 依赖库版本问题:检查你使用的Google Play Services Cast依赖版本,建议使用较新的稳定版本,避免因旧版本的bug导致回调不触发。比如在build.gradle中:

    implementation 'com.google.android.gms:play-services-cast:21.3.0'
    
  • Cast设备兼容性:确认你测试的Chromecast设备支持远程显示功能,部分早期的Chromecast型号可能不支持该特性。

内容的提问来源于stack exchange,提问作者user1724641

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:26:29