加入意图
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
“想要加入”是 Android Sender 中的一项新功能,
发送应用“加入”由其他应用启动的投放会话,或
语音。您将发送器应用设置为由 Cast 创建的 intent 启动
SDK。
例如,在使用语音启动投放会话时,Cast SDK 会创建一个
通知,允许用户控制所有 Android 手机上的播放
同一网络中。当用户点按通知时,Cast SDK 会创建
intent 来启动您的应用以加入投放会话。
请参阅
CastVideos-Android 示例
了解 intent to Join 的有效实现。
使用 Android 发送者
如需启用此功能,请在您的应用中执行以下步骤:
请确保您的应用使用的 Android 发件人 SDK 版本高于
11.4.0.在 build.gradle
中:
dependencies {
api 'com.google.android.gms:play-services-cast-framework:11.4.0'
}
向要在其中处理 intent 的 activity 添加新的 intent 过滤器。通过
intent 将供远程控制通知 (RCN) 使用,以启动您的应用
并加入投放会话
我们建议您选择
SessionManagerListener
由系统托管,而
onSessionStarted()
或
onSessionStartFailed()
调用该方法。
确保新的 intent 过滤器在整个 Android 系统中是唯一的。周三
我们建议您使用 <data>
代码来执行此操作,如下所示:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="your_app_scheme" android:host="your_app_host"
android:path="your_app_path"/>
</intent-filter>
<data>
标记的示例:
<data android:scheme="https" android:host="example.com"
android:path="/cast/join"/>
在您定义新 intent 过滤器的 activity 中,调用
SessionManager.startSession(Intent)
在 onResume()
中:
override fun onResume() {
...
val intent = intent
// Intent with format: "<your_app_scheme>://<your_app_host><your_app_path>"
val intentToJoinUri = Uri.parse("https://example.com/cast/join")
if (intent.data != null && intent.data == intentToJoinUri) {
mCastContext.sessionManager.startSession(intent)
}
...
}
@Override
protected void onResume() {
...
Intent intent = getIntent();
// Intent with format: "<your_app_scheme>://<your_app_host><your_app_path>"
Uri intentToJoinUri = Uri.parse("https://example.com/cast/join");
if (intent.getData() != null && intent.getData().equals(intentToJoinUri)) {
mCastContext.getSessionManager().startSession(intent);
}
...
}
Google Cast Developer Console 设置
若要利用“加入 intent”功能,应用 URI 和软件包名称必须
已添加到
Google Cast 开发者控制台。

您的接收者还必须列出并发布,“意图加入”功能才能正常运行
正确。
如需列出您的应用,请将列表选项切换为“是”并提供一个标题
以及一张 512x512 的图形

设置完成后,您可以使用遥控器通知来测试实现
(RCN) 如下所示:
- 在 Android 手机上安装 Google Home 应用,然后连接到 WLAN 网络
手机。
- 支持 Cast 的设备会在同一网络下设置 Google Home 设备。
- 使用
命令与控制 (CaC) 工具、
另一台 Android 或 iOS 设备,或通过语音查看网络接收器
应用启动时。
- 等待几秒钟,以便手机上收到 RCN 并点按通知
触发 intent。该 intent 应向符合以下条件的任何应用广播:
使用加入会话所需的数据注册 intent。
SessionManagerListener.onSessionStarted(T, String)
就会被触发并加入会话
验证
如果您的应用成功加入会话,
SessionManagerListener.onSessionStarted(T, String)
调用该方法。否则
SessionManagerListener.onSessionStartFailed(T, int)
调用该方法。假设您的应用已经正确处理了这些事件(针对
启动展开后的控制器或迷你控制器)
执行任何其他操作。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-07-25。
[null,null,["最后更新时间 (UTC):2025-07-25。"],[[["\u003cp\u003eThe "Intent to Join" feature enables Android sender apps to join existing Cast sessions initiated by other apps or voice commands.\u003c/p\u003e\n"],["\u003cp\u003eTo enable this, add a specific intent filter to your activity, update your Android Sender SDK, and configure your app in the Google Cast Developer Console.\u003c/p\u003e\n"],["\u003cp\u003eThe Cast SDK creates an intent that launches your app and allows it to join the session when a user interacts with a Cast notification.\u003c/p\u003e\n"],["\u003cp\u003eVerify successful implementation by checking if \u003ccode\u003eSessionManagerListener.onSessionStarted\u003c/code\u003e or \u003ccode\u003eSessionManagerListener.onSessionStartFailed\u003c/code\u003e is called appropriately.\u003c/p\u003e\n"],["\u003cp\u003eRefer to the CastVideos-Android sample for a working implementation of the Intent to Join feature.\u003c/p\u003e\n"]]],["The \"Intent to Join\" feature allows an Android sender app to join an existing Cast session. To enable it, ensure the app uses Android Sender SDK version 11.4.0 or greater, add a unique intent filter to an activity, and call `SessionManager.startSession(Intent)` in `onResume()`. The app URI and package name must be added to the Google Cast Developer Console, and the receiver must be listed. Tapping a Remote Control Notification triggers an intent, starting a session and calling `onSessionStarted()` if successful, otherwise `onSessionStartFailed()` is called.\n"],null,["# Intent to Join\n\n\"Intent to Join\" is a new feature of the Android Sender that allows a\nsender app to \"join\" a Cast session that has been initiated by other apps or\nvoice. You set up your sender app to be launched by an intent created by Cast\nSDK.\n\nFor example, when using voice to start a Cast session, Cast SDK creates a\nnotification that allows a user to control the playback on all Android phones\non the same network. When the notification is tapped, Cast SDK creates the\nintent to launch your app to join the Cast session.\n\nSee the\n[CastVideos-Android sample](https://github.com/googlecast/CastVideos-android)\nfor a working implementation of Intent to Join.\n\nUsing an Android Sender\n-----------------------\n\nTo enable this feature, perform the following steps in your app:\n\nMake sure your app is already using Android Sender SDK version greater than\n11.4.0. In `build.gradle`: \n\n dependencies {\n api 'com.google.android.gms:play-services-cast-framework:11.4.0'\n }\n\nAdd a new intent filter to an activity where you want to handle the intent. The\nintent will be used by Remote Control Notifications (RCN) to launch your app\nand join a Cast session.\nWe recommend you use the activity where\n[`SessionManagerListener`](/cast/docs/reference/android/com/google/android/gms/cast/framework/SessionManagerListener)\nis hosted, and either\n[`onSessionStarted()`](/cast/docs/reference/android/com/google/android/gms/cast/framework/SessionManagerListener#onSessionStarted(T,%20java.lang.String))\nor\n[`onSessionStartFailed()`](/cast/docs/reference/android/com/google/android/gms/cast/framework/SessionManagerListener#onSessionStartFailed(T,%20int))\nwill be called.\nMake sure the new intent filter is unique across the entire Android system. We\nrecommend you use the `\u003cdata\u003e` tag to do that, as follows: \n\n \u003cintent-filter\u003e\n \u003caction android:name=\"android.intent.action.VIEW\" /\u003e\n \u003ccategory android:name=\"android.intent.category.DEFAULT\" /\u003e\n \u003ccategory android:name=\"android.intent.category.BROWSABLE\" /\u003e\n \u003cdata android:scheme=\"your_app_scheme\" android:host=\"your_app_host\"\n android:path=\"your_app_path\"/\u003e\n \u003c/intent-filter\u003e\n\nExamples of `\u003cdata\u003e` tag: \n\n \u003cdata android:scheme=\"https\" android:host=\"example.com\"\n android:path=\"/cast/join\"/\u003e\n\nIn the activity where you define the new intent filter, call\n[`SessionManager.startSession(Intent)`](/cast/docs/reference/android/com/google/android/gms/cast/framework/SessionManager#startSession(android.content.Intent))\nin `onResume()`:\nKotlin \n\n```kotlin\noverride fun onResume() {\n ...\n val intent = intent\n // Intent with format: \"\u003cyour_app_scheme\u003e://\u003cyour_app_host\u003e\u003cyour_app_path\u003e\"\n val intentToJoinUri = Uri.parse(\"https://example.com/cast/join\")\n if (intent.data != null && intent.data == intentToJoinUri) {\n mCastContext.sessionManager.startSession(intent)\n }\n ...\n}\n```\nJava \n\n```java\n@Override\nprotected void onResume() {\n ...\n Intent intent = getIntent();\n // Intent with format: \"\u003cyour_app_scheme\u003e://\u003cyour_app_host\u003e\u003cyour_app_path\u003e\"\n Uri intentToJoinUri = Uri.parse(\"https://example.com/cast/join\");\n if (intent.getData() != null && intent.getData().equals(intentToJoinUri)) {\n mCastContext.getSessionManager().startSession(intent);\n }\n ...\n}\n```\n\nGoogle Cast Developer Console setup\n-----------------------------------\n\nTo utilize the Intent to Join feature, the app URI and package name must be\nadded in the\n[Google Cast Developer Console](https://cast.google.com/publish/#/overview).\n\nYour receiver must also be listed and published for Intent to Join to work\nproperly.\n\nTo list your app, toggle the listing option to \"YES\" and provide a title,\ndescription, and a 512x512 graphic for your app.\n\nAfter setup, you can test the implementation with Remote Control Notifications\n(RCN) as below:\n\n1. Install the Google Home App on an Android phone, and connect to Wi-Fi on the phone.\n2. The Cast-enabled device sets up the Google Home device under the same network.\n3. Initiate a Cast session with the Google Home device using the [Command and Control (CaC) Tool](https://casttool.appspot.com/cactool/), another Android or iOS device, or through voice and check if the Web Receiver app is launched.\n4. Wait for a few seconds to get RCN on the phone, and tap the notification to trigger the intent. The intent should be broadcasted to any app that registers the intent with the required data to join the session.\n\n[`SessionManagerListener.onSessionStarted(T, String)`](/cast/docs/reference/android/com/google/android/gms/cast/framework/SessionManagerListener#onSessionStarted(T,%20java.lang.String))\nwill be triggered and join the session.\n\nVerification\n------------\n\nIf your app successfully joins the session,\n[`SessionManagerListener.onSessionStarted(T, String)`](/cast/docs/reference/android/com/google/android/gms/cast/framework/SessionManagerListener#onSessionStarted(T,%20java.lang.String))\nis called. Otherwise,\n[`SessionManagerListener.onSessionStartFailed(T, int)`](/cast/docs/reference/android/com/google/android/gms/cast/framework/SessionManagerListener#onSessionStartFailed(T,%20int))\nis called. Assuming your app already handles those events properly (for\nexample, launching expanded controller or mini controller), you don't have to\ndo anything further."]]