flutter 使用sy_flutter_alipay插件在安卓支付宝支付返回闪退的解决方法
使用sy_flutter_alipay进行支付宝支付的时候,由于安卓支付宝支付返回时,插件内部开辟了子线程,返回的时候没有回到主线程,所以导致崩溃。在插件内部成功和异常的方法都放在主线程中,就没有问题了。
解决办法 修改源码
//调起支付
public void alipay(final String payInfo, boolean isSandbox, final MethodChannel.Result callback) {
//沙箱环境
if (isSandbox) {
EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);
}
final Activity activity = this.activity;
Runnable payRunnable = new Runnable() {
@Override
public void run() {
try {
PayTask alipay = new PayTask(activity);
final Map<String, String> result = alipay.payV2(payInfo, true);
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
callback.success(result);
}
});
} catch (final Exception e) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
callback.error("PAY_ERROR", e.getMessage(), null);
}
});
}
}
};
Thread payThread = new Thread(payRunnable);
payThread.start();
}
2 回复
可以
可以