fix:Android端新增将正在运行的最后一个打开的小程序移至前台的方法;
parent
ffbc1b16d7
commit
373bbdbe42
|
@ -23,6 +23,7 @@ import com.finogeeks.lib.applet.sdk.api.IAppletHandler;
|
||||||
import com.finogeeks.mop.api.BaseApi;
|
import com.finogeeks.mop.api.BaseApi;
|
||||||
import com.finogeeks.mop.interfaces.ICallback;
|
import com.finogeeks.mop.interfaces.ICallback;
|
||||||
import com.finogeeks.mop.service.MopPluginService;
|
import com.finogeeks.mop.service.MopPluginService;
|
||||||
|
import com.finogeeks.mop.utils.AppletUtils;
|
||||||
import com.finogeeks.mop.utils.GsonUtil;
|
import com.finogeeks.mop.utils.GsonUtil;
|
||||||
import com.google.gson.reflect.TypeToken;
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
|
||||||
|
@ -374,7 +375,7 @@ public class AppletHandlerModule extends BaseApi {
|
||||||
channel.invokeMethod(channelMethodName, null, new MethodChannel.Result() {
|
channel.invokeMethod(channelMethodName, null, new MethodChannel.Result() {
|
||||||
@Override
|
@Override
|
||||||
public void success(@androidx.annotation.Nullable Object result) {
|
public void success(@androidx.annotation.Nullable Object result) {
|
||||||
moveCurrentAppletToFront();
|
AppletUtils.moveCurrentAppletToFront(getContext(), null);
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
try {
|
try {
|
||||||
Map<String, String> resultMap = (Map<String, String>) result;
|
Map<String, String> resultMap = (Map<String, String>) result;
|
||||||
|
@ -393,7 +394,7 @@ public class AppletHandlerModule extends BaseApi {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void error(String errorCode, @androidx.annotation.Nullable String errorMessage, @androidx.annotation.Nullable Object errorDetails) {
|
public void error(String errorCode, @androidx.annotation.Nullable String errorMessage, @androidx.annotation.Nullable Object errorDetails) {
|
||||||
moveCurrentAppletToFront();
|
AppletUtils.moveCurrentAppletToFront(getContext(), null);
|
||||||
callback.onFailure();
|
callback.onFailure();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -404,26 +405,4 @@ public class AppletHandlerModule extends BaseApi {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ import com.finogeeks.lib.applet.interfaces.FinCallback;
|
||||||
import com.finogeeks.lib.applet.rest.model.WechatLoginInfo;
|
import com.finogeeks.lib.applet.rest.model.WechatLoginInfo;
|
||||||
import com.finogeeks.mop.api.BaseApi;
|
import com.finogeeks.mop.api.BaseApi;
|
||||||
import com.finogeeks.mop.interfaces.ICallback;
|
import com.finogeeks.mop.interfaces.ICallback;
|
||||||
|
import com.finogeeks.mop.utils.AppletUtils;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -32,8 +33,9 @@ public class AppletManageModule extends BaseApi {
|
||||||
@Override
|
@Override
|
||||||
public String[] apis() {
|
public String[] apis() {
|
||||||
return new String[]{"currentApplet", "closeAllApplets", "clearApplets",
|
return new String[]{"currentApplet", "closeAllApplets", "clearApplets",
|
||||||
"removeUsedApplet", "removeAllUsedApplets","closeApplet",
|
"removeUsedApplet", "removeAllUsedApplets", "closeApplet",
|
||||||
"setActivityTransitionAnim", "sendCustomEvent", "callJS", "finishRunningApplet"};
|
"setActivityTransitionAnim", "sendCustomEvent", "callJS", "finishRunningApplet",
|
||||||
|
"moveCurrentAppletToFront"};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -168,6 +170,8 @@ public class AppletManageModule extends BaseApi {
|
||||||
} else {
|
} else {
|
||||||
callback.onFail(null);
|
callback.onFail(null);
|
||||||
}
|
}
|
||||||
|
} else if (event.equals("moveCurrentAppletToFront")) {
|
||||||
|
AppletUtils.moveCurrentAppletToFront(getContext(), callback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
package com.finogeeks.mop.utils;
|
||||||
|
|
||||||
|
import android.app.PendingIntent;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
|
||||||
|
import com.finogeeks.lib.applet.client.FinAppClient;
|
||||||
|
import com.finogeeks.mop.interfaces.ICallback;
|
||||||
|
|
||||||
|
public class AppletUtils {
|
||||||
|
public static void moveCurrentAppletToFront(Context context, ICallback<Object> callback) {
|
||||||
|
try {
|
||||||
|
String currentAppletId = FinAppClient.INSTANCE.getAppletApiManager().getCurrentAppletId();
|
||||||
|
if (currentAppletId == null || TextUtils.isEmpty(currentAppletId)) {
|
||||||
|
if (callback != null) {
|
||||||
|
callback.onFail(null);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String activityName = FinAppClient.INSTANCE.getAppletApiManager().getAppletActivityName(currentAppletId);
|
||||||
|
if (activityName == null) {
|
||||||
|
if (callback != null) {
|
||||||
|
callback.onFail(null);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (activityName.contains("@")) {
|
||||||
|
activityName = activityName.substring(0, activityName.indexOf("@"));
|
||||||
|
}
|
||||||
|
Intent intent = new Intent(context, Class.forName(activityName));
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
PendingIntent pendingIntent = PendingIntent.getActivities(context, 0, new Intent[]{intent}, 0);
|
||||||
|
pendingIntent.send();
|
||||||
|
callback.onSuccess(null);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
if (callback != null) {
|
||||||
|
callback.onFail(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -675,4 +675,11 @@ class Mop {
|
||||||
_webExtensionApis[name] = handler;
|
_webExtensionApis[name] = handler;
|
||||||
_channel.invokeMethod("addWebExtentionApi", {"name": name});
|
_channel.invokeMethod("addWebExtentionApi", {"name": name});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
/// 将当前正在运行的最后一个打开的小程序移至任务栈前台
|
||||||
|
///
|
||||||
|
void moveCurrentAppletToFront() async {
|
||||||
|
return await _channel.invokeMethod("moveCurrentAppletToFront");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue