Unity安卓平台开发,启动app并传参

csharp 复制代码
using UnityEngine;
using System;

public class IntentReceiver : MonoBehaviour
{
    public bool isVR1;
    void Start()
    {
        Debug.LogError("app1111111111111111111111111");
        if (isVR1)
        {
            LaunchAnotherApp("com.HappyMaster.DaKongJianVR2");
        }
        else
        {
            // 检查是否有传递的参数
            if (Application.isMobilePlatform)
            {
                AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
                AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");

                AndroidJavaObject intent = currentActivity.Call<AndroidJavaObject>("getIntent");

                // 检查Intent是否包含额外的数据
                if (intent != null)
                {
                    // 从Intent中获取参数
                    string sn = intent.Call<string>("getStringExtra", "sn");
                    int group = intent.Call<int>("getIntExtra", "group", 0);
                    string app = intent.Call<string>("getStringExtra", "app");
                    string user = intent.Call<string>("getStringExtra", "user");
                    int human = intent.Call<int>("getIntExtra", "human", 0);
                    int times = intent.Call<int>("getIntExtra", "times", 0);

                    // 在这里处理接收到的参数
                    Debug.Log($"Received parameter: \n{sn}\n{group}\n{app}\n{user}\n{human}\n{times}");
                }
            }
        }
    }


    void LaunchAnotherApp(string packageName)
    {
        try
        {
            AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
            AndroidJavaObject pm = currentActivity.Call<AndroidJavaObject>("getPackageManager");
            AndroidJavaObject launchIntent = pm.Call<AndroidJavaObject>("getLaunchIntentForPackage", packageName);
            if (launchIntent == null)
            {
                Debug.Log("无法获取 launch intent");
                return;
            }

            // 添加需要的 extras 和 flags
            launchIntent.Call<AndroidJavaObject>("putExtra", "sn", "PicoSN");
            launchIntent.Call<AndroidJavaObject>("putExtra", "group", 99);
            launchIntent.Call<AndroidJavaObject>("putExtra", "app", "一刀九九");
            launchIntent.Call<AndroidJavaObject>("putExtra", "user", "教主");
            launchIntent.Call<AndroidJavaObject>("putExtra", "human", 0);
            launchIntent.Call<AndroidJavaObject>("putExtra", "times", 2025);

            currentActivity.Call("startActivity", launchIntent);
        }
        catch (Exception e)
        {
            Debug.LogError($"启动app失败: {e.Message}\n{e.StackTrace}");
        }
    }

}

AndroidManifest 需要添加权限

相关推荐
Doro再努力16 小时前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim
Daniel李华16 小时前
echarts使用案例
android·javascript·echarts
做人不要太理性17 小时前
CANN Runtime 运行时组件深度解析:任务调度机制、存储管理策略与维测体系构建逻辑
android·运维·魔珐星云
我命由我1234518 小时前
Android 广播 - 静态注册与动态注册对广播接收器实例创建的影响
android·java·开发语言·java-ee·android studio·android-studio·android runtime
小李也疯狂18 小时前
Unity 中的立方体贴图(Cubemaps)
unity·游戏引擎·贴图·cubemap
牛掰是怎么形成的18 小时前
Unity材质贴图引用陷阱:包体暴涨真相
unity·材质·贴图
呆呆敲代码的小Y18 小时前
【Unity工具篇】| 超实用工具LuBan,快速上手使用
游戏·unity·游戏引擎·unity插件·luban·免费游戏·游戏配置表
EQ-雪梨蛋花汤18 小时前
【Unity优化】Unity多场景加载优化与资源释放完整指南:解决Additive加载卡顿、预热、卸载与内存释放问题
unity·游戏引擎
朗迹 - 张伟18 小时前
Tauri2 导出 Android 详细教程
android
我的offer在哪里19 小时前
用 Unity 从 0 做一个「可以玩的」游戏,需要哪些步骤和流程
游戏·unity·游戏引擎