package com.yeshi.location.plugins; import android.app.Activity; import android.content.Context; import android.net.Uri; import android.os.Build; import android.util.Log; import com.yeshi.location.utils.ShareImageUtil; import java.io.File; import java.util.ArrayList; import androidx.core.content.FileProvider; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; public class ShareFlutterPlugins implements MethodChannel.MethodCallHandler { public static String CHANNEL = "com.yeshi.location/share"; // 分析1 static MethodChannel channel; private Activity activity; private ShareFlutterPlugins(Activity activity) { this.activity = activity; } public static void registerWith(Activity activity, BinaryMessenger messager) { channel = new MethodChannel(messager, CHANNEL); ShareFlutterPlugins instance = new ShareFlutterPlugins(activity); channel.setMethodCallHandler(instance); } @Override public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) { // 分析 2 String method = methodCall.method; switch (method) { case "shareImg": String platform=methodCall.argument("platform"); String path = methodCall.argument("path"); ArrayList uris = new ArrayList<>(); uris.add(getUriForFile(activity,new File(path))); Log.i("ShareFlutterPlugins",platform); switch(platform){ case "qq": ShareImageUtil.shareQQPictureByIntent(activity, uris); break; case "wx": ShareImageUtil.shareWXPictureByIntent(activity, uris); break; case "sina": ShareImageUtil.shareSinaPictureByIntent(activity, uris); break; } result.success(true); break; default: result.notImplemented(); } } private static Uri getUriForFile(Context context, File file) { if (context == null || file == null) { throw new NullPointerException(); } Uri uri; if (Build.VERSION.SDK_INT >= 24) { uri = FileProvider.getUriForFile(context.getApplicationContext(), "com.yeshi.location.fileprovider", file); } else { uri = Uri.fromFile(file); } return uri; } }