文档中心>应用云渲染>实践教程>云 APK 参数传递说明

云 APK 参数传递说明

最近更新时间:2026-06-12 15:18:30

我的收藏
云 APK 支持参数传递,需要云端 APK 应用进行一定改造,响应相关参数。

参数传递方式

在调用云渲染的 CreateSession API 时,需在 ApplicationParams 参数中按固定格式填写:
--es key value
格式说明:
--eskeyvalue 三个字段之间需以空格分隔。
该参数将随任务传递至客户端容器。
示例:
--es ParamKey {value1,value2} xxx

参数接收与获取流程

1. 广播触发

云渲染任务发起后,云端 Android 容器会自动将业务 App 置于前台运行,并发出广播:
android.intent.action.CLOUD_GAMING_STARTED

2. 接收与解析

业务 APK 需在 MainActivity 中注册该广播。接收到广播后,可通过以下方式获取数据:
String data = intent.getStringExtra("key");
示例说明:
传递参数
获取方式
最终值
--es ParamKey {value1,value2} xxx
intent.getStringExtra("ParamKey")
{value1,value2} xxx
获取数据后,业务 APK 可据此参数进行业务处理,例如直播间跳转。

本地测试方法

业务 APK 完成广播注册后,可使用以下 adb 命令在本地模拟测试跳转功能是否正常:
adb shell am broadcast -a android.intent.action.CLOUD_GAMING_STARTED -e tencent_scheme Tencent://autoAuth

核心实现建议

1. 创建广播接收器

需创建 BroadcastReceiver 类监听 android.intent.action.CLOUD_GAMING_STARTED 广播,并通过 intent.getExtras() 提取携带的额外数据。

2. 动态注册

MainActivityService 中动态注册该 Receiver,确保在容器拉起时能正确响应并解析参数。

完整代码示例

1. 广播接收处理类

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.os.Bundle;

public class CloudGamingBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "CloudGamingReceiver";

@Override
public void onReceive(Context context, Intent intent) {
// 检查广播Action是否匹配目标
if (intent == null || !"android.intent.action.CLOUD_GAMING_STARTED".equals(intent.getAction())) {
return;
}
// 打印广播的完整信息(包括额外数据)
Log.d(TAG, "接收到CLOUD_GAMING_STARTED广播,来源: " + intent.getSourceFilters());
// 提取广播携带的额外数据(根据实际场景调整键名)
Bundle extras = intent.getExtras();
if (extras != null) {
Log.d(TAG, "广播携带的额外数据: ");
for (String key : extras.keySet()) {
Object value = extras.get(key);
Log.d(TAG, " Key: " + key + ", Value: " + value);
}
} else {
Log.d(TAG, "广播未携带额外数据");
}
}
}

2. 在 Activity 中动态注册

import android.content.IntentFilter;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {
private CloudGamingBroadcastReceiver receiver;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 实例化广播接收器
receiver = new CloudGamingBroadcastReceiver();
// 创建IntentFilter并添加Action
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.CLOUD_GAMING_STARTED");
// 动态注册广播接收器
registerReceiver(receiver, filter);
}

@Override
protected void onDestroy() {
super.onDestroy();
// 注销广播接收器,防止内存泄漏
if (receiver != null) {
unregisterReceiver(receiver);
}
}
}

3. 关键说明

项目
说明
作用
配合云渲染任务发起时传递的参数,在业务 APK 被云渲染 Android 容器拉起后,自动接收广播、解析参数。
广播 Action
android.intent.action.CLOUD_GAMING_STARTED
参数格式
--es key value
本地测试命令
adb shell am broadcast -a android.intent.action.CLOUD_GAMING_STARTED -e tencent_scheme Tencent://autoAuth