养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

Unity 之 唤起调用 Android 其它应用app的方法

时间:2024-11-15 02:03:52

Unity之唤起调用Android其它应用app的方法。本节介绍,在曷决仙喁Unity开发中,使用AndroidStudio,编写Android调用其它的应用App惺绅寨瞀的方法,打包成aar给Unity调用的方法,实现Unity中调用Android其它应用的方法,具体如下

Unity 之 唤起调用 Android 其它应用app的方法

工具/原料

Unity

AndroidStudio

方法/步骤

1、打开AndroidStudio,新建一个工程,具体如下图

Unity 之 唤起调用 Android 其它应用app的方法

Unity 之 唤起调用 Android 其它应用app的方法

2、在工程中,新建一个模块(NewModule),选择AndroidLibrary,取一个名字,点击Finish,添加一个模块,具体如下图

Unity 之 唤起调用 Android 其它应用app的方法

Unity 之 唤起调用 Android 其它应用app的方法

Unity 之 唤起调用 Android 其它应用app的方法

3、选中刚才新建的模块,右键向新建的模块添加一个JavaClass,具体如下图

Unity 之 唤起调用 Android 其它应用app的方法

Unity 之 唤起调用 Android 其它应用app的方法

4、向脚本中添加代码,首先添加一个通过反射,获取UnityActivity,然后编写调用Android其它应用的接口,包括检测对应android是否存在,具体代码和代码说明如下图

Unity 之 唤起调用 Android 其它应用app的方法

Unity 之 唤起调用 Android 其它应用app的方法

5、CallAnotherApp.java具赍鲽判燹体的内容如下:packagecom.example.calla荏鱿胫协ndroidapp;importandroid.app.Activity;importandroid.content.Intent;importandroid.content.pm.PackageInfo;importandroid.content.pm.PackageManager;importandroid.widget.Toast;publicclassCallAnotherApp{/***设置一个Activity参数*/privateActivity_unityActivity;/***通过反射获取Unity的Activity的上下文*/ActivitygetActivity(){if(null==_unityActivity){try{Class<?>classtype=Class.forName("com.unity3d.player.UnityPlayer");Activityactivity=(Activity)classtype.getDeclaredField("currentActivity").get(classtype);_unityActivity=activity;}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(IllegalAccessExceptione){e.printStackTrace();}catch(NoSuchFieldExceptione){e.printStackTrace();}}return_unityActivity;}/***唤起App*@paramString*/publicvoidDoActiveApp(StringpackageName){PackageManagerpackageManager=getActivity().getPackageManager();if(checkAppExist(packageName)){Intentintent=packageManager.getLaunchIntentForPackage(packageName);getActivity().startActivity(intent);}else{Toast.makeText(getActivity(),packageName+"noexist",Toast.LENGTH_SHORT).show();}}/***检查App是否已安装*@paramString*@returnboolean*/privatebooleancheckAppExist(StringpackageName){PackageInfopackageInfo=null;try{packageInfo=getActivity().getPackageManager().getPackageInfo(packageName,0);}catch(PackageManager.NameNotFoundExceptione){e.printStackTrace();}returnpackageInfo!=null;}}

6、选中新建的模块,在菜撮劝丛食单栏Build-MakeModule"XXX",,然后在build/outputs文件夹霍丶魇汜下即可以找到编译好的aar,选择编译好的aar,在文件夹中查看,便于拖入Unity工程中,具体如下图

Unity 之 唤起调用 Android 其它应用app的方法

Unity 之 唤起调用 Android 其它应用app的方法

7、打开Unity,新建一个Unity工程,然后把aar拖进Unity工程中的Plugins/Android文件夹中,作为SDK调用,具体如下图

Unity 之 唤起调用 Android 其它应用app的方法

Unity 之 唤起调用 Android 其它应用app的方法

8、在场景中添加一个Button,布局如图,作为点击唤醒AndroidApp的触发方式,具体如下图

Unity 之 唤起调用 Android 其它应用app的方法

9、在工程中,新建一个脚本Test,双击或者右键打开进行编辑,具体如下图

Unity 之 唤起调用 Android 其它应用app的方法

10、代码内容大概是,通过New把aar包中的类获取到,然后给按钮绑定事件,触发唤醒其它应用的委托,这里以调用百度地图App为例,具体代码和代码说明如下图

Unity 之 唤起调用 Android 其它应用app的方法

11、Test脚本内容如下:usingUnityEngine;usingU艘绒庳焰nityEngine.UI;publicclass惺绅寨瞀Test:MonoBehaviour{publicButtonbtn;///<summary>///android对象///</summary>AndroidJavaObjectandroidJavaObject;voidStart(){//通过该API来实例化导入的arr中对应的类,参数为包名+类名androidJavaObject=newAndroidJavaObject("com.example.callandroidapp.CallAnotherApp");//按钮添加唤起app事件btn.onClick.AddListener(OnBtnClick);}///<summary>///调用其它应用///</summary>privatevoidOnBtnClick(){//这里测试唤起安装的百度地图androidJavaObject.Call("DoActiveApp","com.baidu.BaiduMap");}}

12、脚本编译正确,回到Unity,把脚本挂载到场景中新添加的GameObject上,并把按钮赋值上去,具体如下图

Unity 之 唤起调用 Android 其它应用app的方法

13、保存场景,切换Android平台,连接测试机,PlayerSettings的包名可以不予啊啊让的报名一样,打包在测试机上运行,具体如下图

Unity 之 唤起调用 Android 其它应用app的方法

14、在测试机上运行,点击按钮,就可以唤起打开到百度地图应用,具体如下图

Unity 之 唤起调用 Android 其它应用app的方法

© 一点知识