feat:新增Android端对chooseAvatar的处理;

master
yangbingqiao 2022-08-26 14:20:04 +08:00
parent c09a5eb0cc
commit b07ffc1a53
2 changed files with 98 additions and 1 deletions

View File

@ -91,6 +91,6 @@ kapt {
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.finogeeks.lib:finapplet:2.37.9'
implementation 'com.finogeeks.lib:finapplet:2.37.10-alpha20220826v01'
implementation 'com.finogeeks.mop:plugins:2.37.9'
}

View File

@ -1,17 +1,22 @@
package com.finogeeks.mop.api.mop;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.text.TextUtils;
import android.util.Log;
import com.finogeeks.lib.applet.client.FinAppClient;
import com.finogeeks.lib.applet.client.FinAppTrace;
import com.finogeeks.lib.applet.interfaces.FinCallback;
import com.finogeeks.lib.applet.page.view.moremenu.MoreMenuItem;
import com.finogeeks.lib.applet.page.view.moremenu.MoreMenuType;
import com.finogeeks.lib.applet.rest.model.GrayAppletVersionConfig;
import com.finogeeks.lib.applet.sdk.api.IAppletApiManager;
import com.finogeeks.lib.applet.sdk.api.IAppletHandler;
import com.finogeeks.mop.api.BaseApi;
import com.finogeeks.mop.interfaces.ICallback;
@ -287,6 +292,32 @@ public class AppletHandlerModule extends BaseApi {
@Override
public void chooseAvatar(@NotNull IAppletCallback callback) {
IAppletApiManager appletApiManager = FinAppClient.INSTANCE.getAppletApiManager();
String currentId = appletApiManager.getCurrentAppletId();
if (currentId == null || TextUtils.isEmpty(currentId)) {
callback.onFailure();
return;
}
appletApiManager.callInAppletProcess(
currentId,
"showChooseAvatarBottomSheet",
"",
new FinCallback<String>() {
@Override
public void onSuccess(String s) {
chooseAvatarChannel(s, callback, channel);
}
@Override
public void onError(int i, String s) {
callback.onFailure();
}
@Override
public void onProgress(int i, String s) {
}
});
}
@Override
@ -316,4 +347,70 @@ public class AppletHandlerModule extends BaseApi {
phoneNumberCallback.onSuccess(jsonObject);
}
}
private void chooseAvatarChannel(String type, IAppletHandler.IAppletCallback callback, MethodChannel channel) {
handler.post(() -> {
String channelMethodName;
if (TextUtils.equals(type, "album")) {
channelMethodName = "extensionApi:chooseAvatarAlbum";
} else if (TextUtils.equals(type, "camera")) {
channelMethodName = "extensionApi:chooseAvatarPhoto";
} else {
return;
}
channel.invokeMethod(channelMethodName, null, new MethodChannel.Result() {
@Override
public void success(@androidx.annotation.Nullable Object result) {
moveCurrentAppletToFront();
if (result != null) {
try {
Map<String, String> resultMap = (Map<String, String>) result;
JSONObject resultJson = new JSONObject();
String avatarUrl = resultMap.get("avatarUrl");
resultJson.put("avatarUrl", avatarUrl);
callback.onSuccess(resultJson);
} catch (Exception e) {
e.printStackTrace();
callback.onFailure();
}
} else {
callback.onFailure();
}
}
@Override
public void error(String errorCode, @androidx.annotation.Nullable String errorMessage, @androidx.annotation.Nullable Object errorDetails) {
moveCurrentAppletToFront();
callback.onFailure();
}
@Override
public void notImplemented() {
}
});
});
}
private void moveCurrentAppletToFront() {
try {
String currentAppletId = FinAppClient.INSTANCE.getAppletApiManager().getCurrentAppletId();
if (currentAppletId == null || TextUtils.isEmpty(currentAppletId)) {
return;
}
String activityName = FinAppClient.INSTANCE.getAppletApiManager().getAppletActivityName(currentAppletId);
if (activityName == null) {
return;
}
if (activityName.contains("@")) {
activityName = activityName.substring(0, activityName.indexOf("@"));
}
Intent intent = new Intent(getContext(), Class.forName(activityName));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivities(getContext(), 0, new Intent[]{intent}, 0);
pendingIntent.send();
} catch (Exception e) {
e.printStackTrace();
}
}
}