flutter分享到支付宝
应该很少有人做分享到支付宝吧,哈哈。 太小众了。
我是用的这个: https://pub.dev/packages/alipay_share_supplyuuu
但是它写得有毛病,连个 example 都懒得写啊这人。
他的问题主要在android里面,先把它写的kotlin给删掉,完全没有用啊。
再把他写的 FlutterAppopenPlugin改成新的写法, 他这个老的了, 不能用
package com.yunupay.apopen;import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.widget.Toast;import android.content.Context;import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import io.flutter.plugin.common.MethodChannel.Result;
import io.flutter.plugin.common.PluginRegistry.Registrar;import com.alipay.share.sdk.openapi.APImageObject;
import com.alipay.share.sdk.openapi.APWebPageObject;
import com.alipay.share.sdk.openapi.IAPApi;
import com.alipay.share.sdk.openapi.APTextObject;
import com.alipay.share.sdk.openapi.APMediaMessage;
import com.alipay.share.sdk.openapi.SendMessageToZFB;
import com.alipay.share.sdk.openapi.APAPIFactory;import java.util.HashMap;
import java.util.Map;/*** FlutterNativeLogPlugin*/
@SuppressWarnings("unchecked")
public class FlutterApopenPlugin implements FlutterPlugin, MethodCallHandler {private IAPApi _api;private Context mContext = null;/*** Plugin registration.*/@Overridepublic void onAttachedToEngine(FlutterPluginBinding binding) {if (null == mContext) {mContext = binding.getApplicationContext();final MethodChannel channel = new MethodChannel(binding.getBinaryMessenger(), "com.sunpub/apopen");channel.setMethodCallHandler(new FlutterApopenPlugin());}}@Overridepublic void onDetachedFromEngine(FlutterPluginBinding binding) {}@Overridepublic void onMethodCall(MethodCall call, Result result) {if (call.method.equals("registerAp")) {registerAP(call, result);}else if (call.method.equals("isAPAppInstalled")) {isAPAppInstalled(result);}else if (call.method.equals("shareText")) {sendTextMessage(call, result);}else if (call.method.equals("shareImageData")) {sendImageData(call, result);}else if (call.method.equals("shareImageUrl")) {sendImageUrl(call, result);}else if (call.method.equals("shareWebUrl") || call.method.equals("shareWebData")) {sendWebPageWithImg(call, result);} else {result.notImplemented();}}private void registerAP(MethodCall call, Result result) {String appId = call.argument("appId");_api = APAPIFactory.createZFBApi(mContext ,appId,false);boolean isSupport = _api.isZFBSupportAPI();System.out.print(isSupport);Map resultMap = new HashMap();resultMap.put("platform","Android");resultMap.put("result",isSupport);result.success(resultMap);}private void isAPAppInstalled(Result result) {boolean isInstalled = _api.isZFBAppInstalled();System.out.print(isInstalled);result.success(isInstalled);}//文本信息分享private void sendTextMessage(MethodCall call, Result result) {//初始化一个APTextObject对象APTextObject textObject = new APTextObject();textObject.text = call.argument("text");//用APTextObject对象初始化一个APMediaMessage对象APMediaMessage mediaMessage = new APMediaMessage();mediaMessage.mediaObject = textObject;//构造一个ReqSendMessageToZFB.Req req = new SendMessageToZFB.Req();req.message = mediaMessage;//调用api接口发送消息到支付宝boolean boolResult = _api.sendReq(req);Map resultMap = new HashMap();resultMap.put("platform","Android");resultMap.put("result",boolResult);result.success(resultMap);}// 传图片数据private void sendImageData(MethodCall call, Result result) {byte[] imageByte = call.argument("imageData");Bitmap bmp = BitmapFactory.decodeByteArray(imageByte,0,imageByte.length);APImageObject imageObject = new APImageObject(bmp);APMediaMessage mediaMessage = new APMediaMessage();mediaMessage.mediaObject = imageObject;SendMessageToZFB.Req req = new SendMessageToZFB.Req();req.message = mediaMessage;req.transaction = buildTransaction("image");bmp.recycle();//调用api接口发送消息到支付宝boolean boolResult = _api.sendReq(req);Map resultMap = new HashMap();resultMap.put("platform","Android");resultMap.put("result",boolResult);result.success(resultMap);}// 传图片地址private void sendImageUrl(MethodCall call, Result result) {APImageObject imageObject = new APImageObject();imageObject.imageUrl = call.argument("imageUrl");APMediaMessage mediaMessage = new APMediaMessage();mediaMessage.mediaObject = imageObject;SendMessageToZFB.Req req = new SendMessageToZFB.Req();req.message = mediaMessage;req.transaction = buildTransaction("image");//调用api接口发送消息到支付宝boolean boolResult = _api.sendReq(req);Map resultMap = new HashMap();resultMap.put("platform","Android");resultMap.put("result",boolResult);result.success(resultMap);}// 传网页,图片缩略图为urlprivate void sendWebPageWithImg(MethodCall call, Result result) {APWebPageObject webPageObject = new APWebPageObject();webPageObject.webpageUrl = call.argument("wepageUrl");APMediaMessage webMessage = new APMediaMessage();webMessage.title = call.argument("title");webMessage.description = call.argument("desc");webMessage.mediaObject = webPageObject;if(call.method.equals("shareWebData")) {webMessage.thumbData = call.argument("imageData");}else {webMessage.thumbUrl = call.argument("imageUrl");}SendMessageToZFB.Req webReq = new SendMessageToZFB.Req();webReq.message = webMessage;webReq.transaction = buildTransaction("webpage");//调用api接口发送消息到支付宝boolean boolResult = _api.sendReq(webReq);Map resultMap = new HashMap();resultMap.put("platform","Android");resultMap.put("result",boolResult);result.success(resultMap);}private String buildTransaction(final String type) {return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();}}