From e1941bd839ed4d9240badb0fadaba21b1fdee62b Mon Sep 17 00:00:00 2001 From: cenxiaozhong Date: Wed, 18 May 2022 11:00:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EgetMobileNumber=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mop/api/mop/AppletHandlerModule.java | 72 ++++++++++++++++++- example/pubspec.lock | 2 +- lib/api.dart | 5 +- lib/mop.dart | 6 ++ 4 files changed, 81 insertions(+), 4 deletions(-) diff --git a/android/src/main/java/com/finogeeks/mop/api/mop/AppletHandlerModule.java b/android/src/main/java/com/finogeeks/mop/api/mop/AppletHandlerModule.java index 8b65c24..a9adf5b 100644 --- a/android/src/main/java/com/finogeeks/mop/api/mop/AppletHandlerModule.java +++ b/android/src/main/java/com/finogeeks/mop/api/mop/AppletHandlerModule.java @@ -21,6 +21,7 @@ import com.google.gson.reflect.TypeToken; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.json.JSONException; import org.json.JSONObject; import java.io.ByteArrayOutputStream; @@ -35,6 +36,8 @@ import io.flutter.plugin.common.MethodChannel; public class AppletHandlerModule extends BaseApi { private Handler handler = new Handler(Looper.getMainLooper()); + private IAppletHandler.IAppletCallback phoneNumberCallback; + private IAppletHandler mIAppletHandler = null; public AppletHandlerModule(Context context) { super(context); @@ -42,14 +45,21 @@ public class AppletHandlerModule extends BaseApi { @Override public String[] apis() { - return new String[]{"registerAppletHandler"}; + return new String[]{"registerAppletHandler", "getPhoneNumberResult"}; } @Override public void invoke(String event, Map param, ICallback callback) { + + if ("getPhoneNumberResult".equals(event)) { + FinAppTrace.d("AppletHandlerModule", "getPhoneNumberResult"); + getPhoneNumberResult(event, param, callback); + return; + } Log.d("AppletHandlerModule", "registerAppletHandler"); + MethodChannel channel = MopPluginService.getInstance().getMethodChannel(); - FinAppClient.INSTANCE.getAppletApiManager().setAppletHandler(new IAppletHandler() { + FinAppClient.INSTANCE.getAppletApiManager().setAppletHandler(mIAppletHandler = new IAppletHandler() { @Nullable @Override @@ -250,6 +260,29 @@ public class AppletHandlerModule extends BaseApi { @Override public void getPhoneNumber(@NotNull IAppletCallback callback) { + Map params = new HashMap<>(); + handler.post(() -> { + channel.invokeMethod("extensionApi:getPhoneNumber", params, new MethodChannel.Result() { + @Override + public void success(Object result) { + FinAppTrace.d(TAG, "onCustomMenuClick success"); +// callback.onSuccess(null); + phoneNumberCallback = callback; + } + + @Override + public void error(String errorCode, String errorMessage, Object errorDetails) { + FinAppTrace.e(TAG, "onCustomMenuClick errorCode : " + errorCode + " errorMessage : " + errorMessage); + callback.onFailure(); + } + + @Override + public void notImplemented() { + FinAppTrace.d(TAG, "onCustomMenuClick notImplemented"); + callback.onFailure(); + } + }); + }); } @Override @@ -268,5 +301,40 @@ public class AppletHandlerModule extends BaseApi { }); callback.onSuccess(null); + handler.postDelayed(new Runnable() { + @Override + public void run() { + mIAppletHandler.getPhoneNumber(new IAppletHandler.IAppletCallback() { + @Override + public void onSuccess(@androidx.annotation.Nullable JSONObject jsonObject) { + + } + + @Override + public void onFailure() { + + } + + @Override + public void onCancel() { + + } + }); + } + }, 20000L); + } + + private void getPhoneNumberResult(String event, Map param, ICallback callback) { + FinAppTrace.d("AppletHandlerModule", "getPhoneNumberResult,param:" + param.toString()); + callback.onSuccess(null); + if (phoneNumberCallback != null) { + JSONObject jsonObject = new JSONObject(); + try { + jsonObject.put("phone", param.get("phone")); + } catch (JSONException e) { + e.printStackTrace(); + } + phoneNumberCallback.onSuccess(jsonObject); + } } } diff --git a/example/pubspec.lock b/example/pubspec.lock index 6a4cb82..90ce4dd 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -115,7 +115,7 @@ packages: path: ".." relative: true source: path - version: "2.35.11" + version: "2.36.5" path: dependency: transitive description: diff --git a/lib/api.dart b/lib/api.dart index 7d29f4e..df521ca 100644 --- a/lib/api.dart +++ b/lib/api.dart @@ -34,6 +34,9 @@ abstract class AppletHandler { Future onCustomMenuClick( String appId, String path, String menuId, String appInfo); - //打开小程序 + ///打开小程序 Future appletDidOpen(String appId); + + ///getMobileNumber + Future getMobileNumber(Function(dynamic params) param0); } diff --git a/lib/mop.dart b/lib/mop.dart index df9a0e4..4cdf16b 100644 --- a/lib/mop.dart +++ b/lib/mop.dart @@ -272,6 +272,7 @@ class Mop { if (call.method.startsWith("extensionApi:")) { final name = call.method.substring("extensionApi:".length); final handler = _extensionApis[name]; + debugPrint("name:$name,handler:$handler"); if (handler != null) { return await handler(call.arguments); } @@ -474,6 +475,10 @@ class Mop { _extensionApis["appletDidOpen"] = (params) async { return handler.appletDidOpen(params["appId"]); }; + _extensionApis["getPhoneNumber"] = (params) async { + return handler.getMobileNumber((params0) => + {_channel.invokeMethod("getPhoneNumberResult", params0)}); + }; _channel.invokeMethod("registerAppletHandler"); } @@ -527,6 +532,7 @@ class Mop { .invokeMethod("setActivityTransitionAnim", {"anim": anim.name}); return; } + /// /// 原生发送事件给小程序 /// [appId] 小程序id