| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Unity 调用android sdk -> 正文阅读 |
|
[游戏开发]Unity 调用android sdk |
https://jingyan.baidu.com/article/73c3ce285bc424e50343d9d4.html AS: 1. 新建一个Empty Activity,新建一个module/library; 2. 创建一个类CallAnotherApp: CallAnotherApp.java?具体的内容如下: package com.example.callandroidapp; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.widget.Toast; public class CallAnotherApp { ?? ?/** * 设置一个 Activity 参数 */ ? ? ? ? private Activity _unityActivity; ? ? ? ? /** * 通过反射获取 Unity 的 Activity 的上下文 */ ?? ?Activity getActivity(){ ?? ? ? ?if(null == _unityActivity){ ?? ? ? ? ? ?try{ ?? ? ? ? ? ? ? ?Class<?> classtype = Class.forName("com.unity3d.player.UnityPlayer"); ?? ? ? ? ? ? ? ?Activity activity = (Activity) classtype.getDeclaredField("currentActivity").get(classtype); ?? ? ? ? ? ? ? ?_unityActivity = activity;? ? ? ? ? ? ?}catch (ClassNotFoundException e){ ?? ? ? ? ? ? ? ?e.printStackTrace(); ?? ? ? ? ? ?}catch (IllegalAccessException e){ ?? ? ? ? ? ? ? ?e.printStackTrace(); ?? ? ? ? ? ?}catch (NoSuchFieldException e){ ?? ? ? ? ? ? ? ?e.printStackTrace(); ?? ? ? ? ? ?} ?? ? ? ?} ?? ? ? ?return _unityActivity; ?? ?} ?? ?/** * 唤起App * @param String */ ?? ?public void DoActiveApp(String packageName) { ?? ? ? ?PackageManager packageManager = getActivity().getPackageManager(); ?? ? ? ?if (checkAppExist(packageName)) { ?? ? ? ? ? ?Intent intent = packageManager.getLaunchIntentForPackage(packageName); ?? ? ? ? ? ?getActivity().startActivity(intent);? ? ? ? ?} else { ?? ? ? ? ? ?Toast.makeText(getActivity(), packageName + "no exist", Toast.LENGTH_SHORT).show(); ?? ? ? ?} ?? ?} ?? ?/** * 检查App是否已安装 * @param String * @return boolean */ ?? ?private boolean checkAppExist(String packageName) { ?? ? ? ?PackageInfo packageInfo = null; ?? ? ? ?try { ?? ? ? ? ? ?packageInfo = getActivity().getPackageManager().getPackageInfo(packageName, 0);? ? ? ? ?} catch (PackageManager.NameNotFoundException e) { ?? ? ? ? ? ?e.printStackTrace(); ?? ? ? ?} ?? ? ? ?return packageInfo != null; ?? ?} } 3.??Build - Make Module "XXX",编译后outputs得到aar包 Unity 1. Assets下创建Plugins/Android目录,放入编译好的aar包; 2. 测试调用aar包中函数: androidJavaObject = new AndroidJavaObject("com.example.callandroidapp.CallAnotherApp"); ?// 这里测试唤起安装的百度地图 androidJavaObject.Call("DoActiveApp", "com.baidu.BaiduMap"); 真机运行, 调试调用app命令: adb shell am monitor 打开百度地图则调用成功 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/28 12:06:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |