安卓和Unity通信集成Alipay
新建安卓项目 , 记下包名

然后一直下一步 最后一步取消勾选那两个选项

创建完成之后 点击左上角 切换为Project选项

然后点击 APP文件夹里面的build.gradle

把文件开头改成library 然后删除defaultConfig下的applicationId,去掉默认的dependencies下的
compile ‘com.android.support:appcompat-v7:25.0.0'的引入 最后格式为这样

然后删除values文件夹下的style.xml文件
然后找到main文件夹下的AndroidManifest.xml
然后修改AndroidManifest文件中application下的theme为android自带的主题
然后修改AndroidManifest文件中application下的theme为android自带的主题。同时将<activity android:name=".MainActivity">修改为<activity android:name=“com.android.alipay.MainActivity">
然后添加一行
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
最后得到的是这样的

然后引入Unity的Class包
找到unity的classes.jar包
UnityHub下的地址是: /Applications/Unity/Hub/Editor/2018.2.20f1/PlaybackEngines/AndroidPlayer/Variations/mono/Release/Classes/classes.jar
把他复制到安卓项目app文件夹下的lib文件夹下面 然后右键导入

导入之后 build.gradle文件里面就有他的引用了

然后 把alipay demo里面的类复制进来

然后删除里面的 PayDemoActivity 和 ExternalFragment 两个类
然后把alipay SDK里面的那个aar文件也复制到libs文件夹里面

并在app文件夹下的build.gradle文件里面引用

然后把复制过来的其他每个类的包名都改成当前的包名

在项目的build.gradle里面新加一段代码
flatDir {
dirs'libs'
}

然后写方法给unity调用

然后先选择build APK 再选Make Project

编译完成之后 可以在对应的文件夹下找到对应的.aar文件

然后把它复制到桌面 后缀名改为zip解压出来
解压完成文件内容是这样的

然后在unity项目里面引入
文件夹的顺序是这样的

把AndroidManifest.xml文件复制到Android文件夹下 然后把classes.jar文件复制到libs文件夹下 然后再找到alipay SDK里面带的那个.aar文件也复制到libs文件夹下面
然后把整个res文件夹放到Android文件夹下
然后在unity里面新建一个脚本 新建一个按钮
然后绑定按钮点击事件
public classpayTest : MonoBehaviour {
privateAndroidJavaObject jo;
publicButton payBtn;
publicButton authBtn;
publicButton testBtn;
// Use this for initialization
voidStart () {
AndroidJavaClass jc =
new AndroidJavaClass("com.unity3d.player.UnityPlayer");
jo = jc.GetStatic(
"currentActivity");
payBtn.onClick.AddListener(payV2);
authBtn.onClick.AddListener(authV2);
testBtn.onClick.AddListener(test);
//jo.Call("payV2");
}
public voidpayV2()
{
jo.Call(
"payV2");
}
//这个方法是给安卓调的 支付完成之后 会从安卓调用这个方法 public void showResult(stringresult)
{
Text text = GameObject.Find("Text").GetComponent<Text>();
text.text = result;
}
然后打包成apk 点击按钮可以调起支付宝支付
支付完成之后 会自动调用安卓里面的方法
private Handler mHandler = new Handler() {
然后在安卓里面写一行
UnityPlayer.UnitySendMessage("Canvas","showResult","支付成功" + resultStatus);

支付完成之后 会从安卓里面调用Unity的showResult()方法
2019年03月08日17:34:18