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 需要添加权限

相关推荐
有位神秘人5 分钟前
Android获取设备中本地音频
android·音视频
JMchen1238 分钟前
Android网络安全实战:从HTTPS到双向认证
android·经验分享·网络协议·安全·web安全·https·kotlin
CS创新实验室10 分钟前
Pandas 3 的新功能
android·ide·pandas
ujainu21 分钟前
护眼又美观:Flutter + OpenHarmony 鸿蒙记事本一键切换夜间模式(四)
android·flutter·harmonyos
三少爷的鞋33 分钟前
为什么我不在 Android ViewModel 中直接处理异常?
android
草莓熊Lotso2 小时前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能
恋猫de小郭2 小时前
Flutter Zero 是什么?它的出现有什么意义?为什么你需要了解下?
android·前端·flutter
工程师老罗8 小时前
如何在Android工程中配置NDK版本
android
在路上看风景10 小时前
4.5 顶点和片元
unity
Libraeking11 小时前
破壁行动:在旧项目中丝滑嵌入 Compose(混合开发实战)
android·经验分享·android jetpack