From 6f0ac1ae56dfde0e999c73889e7e5107fa1f00e8 Mon Sep 17 00:00:00 2001
From: mac_pig <576618121@qq.com>
Date: Wed, 17 Jul 2019 23:35:09 +0800
Subject: [PATCH] host call plugin
---
.../shadow/sample/host/lib/Callback.java | 9 +++
.../sample/host/lib/HostCallbackProvider.java | 41 ++++++++++
.../host/lib/HostCallbackProvider2.java | 41 ++++++++++
.../shadow/sample/host/HostApplication.java | 13 ++++
.../sample/host/PluginLoadActivity.java | 10 +++
.../src/main/AndroidManifest.xml | 1 +
.../plugin/app/lib/gallery/MainActivity.java | 2 +-
.../app/lib/gallery/cases/UseCaseManager.java | 2 +
.../HostUsePluginClassActivity.java | 75 +++++++++++++++++++
9 files changed, 193 insertions(+), 1 deletion(-)
create mode 100644 projects/sample/source/sample-host-lib/src/main/java/com/tencent/shadow/sample/host/lib/Callback.java
create mode 100644 projects/sample/source/sample-host-lib/src/main/java/com/tencent/shadow/sample/host/lib/HostCallbackProvider.java
create mode 100644 projects/sample/source/sample-host-lib/src/main/java/com/tencent/shadow/sample/host/lib/HostCallbackProvider2.java
create mode 100644 projects/sample/source/sample-plugin/sample-app-lib/src/main/java/com/tencent/shadow/sample/plugin/app/lib/usecases/host_communication/HostUsePluginClassActivity.java
diff --git a/projects/sample/source/sample-host-lib/src/main/java/com/tencent/shadow/sample/host/lib/Callback.java b/projects/sample/source/sample-host-lib/src/main/java/com/tencent/shadow/sample/host/lib/Callback.java
new file mode 100644
index 000000000..cb12d592d
--- /dev/null
+++ b/projects/sample/source/sample-host-lib/src/main/java/com/tencent/shadow/sample/host/lib/Callback.java
@@ -0,0 +1,9 @@
+package com.tencent.shadow.sample.host.lib;
+
+/**
+ * @author zhukun on 2019-07-13.
+ */
+public interface Callback {
+
+ String call(String src);
+}
diff --git a/projects/sample/source/sample-host-lib/src/main/java/com/tencent/shadow/sample/host/lib/HostCallbackProvider.java b/projects/sample/source/sample-host-lib/src/main/java/com/tencent/shadow/sample/host/lib/HostCallbackProvider.java
new file mode 100644
index 000000000..82f2c0059
--- /dev/null
+++ b/projects/sample/source/sample-host-lib/src/main/java/com/tencent/shadow/sample/host/lib/HostCallbackProvider.java
@@ -0,0 +1,41 @@
+package com.tencent.shadow.sample.host.lib;
+
+import android.content.Context;
+import android.util.Log;
+
+/**
+ * @author zhukun on 2019-07-13.
+ */
+public class HostCallbackProvider {
+ private static HostCallbackProvider sInstance;
+ private Callback mCallback;
+
+ public static void init(Context mHostApplicationContext) {
+ sInstance = new HostCallbackProvider(mHostApplicationContext);
+ }
+
+ public static HostCallbackProvider getInstance() {
+ return sInstance;
+ }
+
+ final private Context mHostApplicationContext;
+
+ private HostCallbackProvider(Context mHostApplicationContext) {
+ this.mHostApplicationContext = mHostApplicationContext;
+ }
+
+
+ public void setCallback(Callback callback) {
+ this.mCallback = callback;
+ }
+
+ public Callback getCallback() {
+ return this.mCallback;
+ }
+
+ public void call() {
+ String result = this.mCallback.call("shadow");
+
+ Log.i("test", result);
+ }
+}
diff --git a/projects/sample/source/sample-host-lib/src/main/java/com/tencent/shadow/sample/host/lib/HostCallbackProvider2.java b/projects/sample/source/sample-host-lib/src/main/java/com/tencent/shadow/sample/host/lib/HostCallbackProvider2.java
new file mode 100644
index 000000000..cc26f5985
--- /dev/null
+++ b/projects/sample/source/sample-host-lib/src/main/java/com/tencent/shadow/sample/host/lib/HostCallbackProvider2.java
@@ -0,0 +1,41 @@
+package com.tencent.shadow.sample.host.lib;
+
+import android.content.Context;
+import android.util.Log;
+
+/**
+ * @author zhukun on 2019-07-13.
+ */
+public class HostCallbackProvider2 {
+ private static HostCallbackProvider2 sInstance;
+ private Callback mCallback;
+
+ public static void init(Context mHostApplicationContext) {
+ sInstance = new HostCallbackProvider2(mHostApplicationContext);
+ }
+
+ public static HostCallbackProvider2 getInstance() {
+ return sInstance;
+ }
+
+ final private Context mHostApplicationContext;
+
+ private HostCallbackProvider2(Context mHostApplicationContext) {
+ this.mHostApplicationContext = mHostApplicationContext;
+ }
+
+
+ public void setCallback(Callback callback) {
+ this.mCallback = callback;
+ }
+
+ public Callback getCallback() {
+ return this.mCallback;
+ }
+
+ public void call() {
+ String result = this.mCallback.call("shadow");
+
+ Log.i("test", result);
+ }
+}
diff --git a/projects/sample/source/sample-host/src/main/java/com/tencent/shadow/sample/host/HostApplication.java b/projects/sample/source/sample-host/src/main/java/com/tencent/shadow/sample/host/HostApplication.java
index ca9d93bb9..f71ed714e 100644
--- a/projects/sample/source/sample-host/src/main/java/com/tencent/shadow/sample/host/HostApplication.java
+++ b/projects/sample/source/sample-host/src/main/java/com/tencent/shadow/sample/host/HostApplication.java
@@ -25,6 +25,9 @@
import com.tencent.shadow.core.common.LoggerFactory;
import com.tencent.shadow.dynamic.host.DynamicRuntime;
import com.tencent.shadow.dynamic.host.PluginManager;
+import com.tencent.shadow.sample.host.lib.Callback;
+import com.tencent.shadow.sample.host.lib.HostCallbackProvider;
+import com.tencent.shadow.sample.host.lib.HostCallbackProvider2;
import com.tencent.shadow.sample.host.lib.HostUiLayerProvider;
import com.tencent.shadow.sample.host.manager.Shadow;
@@ -52,6 +55,16 @@ public void onCreate() {
PluginHelper.getInstance().init(this);
HostUiLayerProvider.init(this);
+ HostCallbackProvider.init(this);
+
+
+ HostCallbackProvider2.init(this);
+ HostCallbackProvider2.getInstance().setCallback(new Callback() {
+ @Override
+ public String call(String src) {
+ return "src:" + src;
+ }
+ });
}
private static void detectNonSdkApiUsageOnAndroidP() {
diff --git a/projects/sample/source/sample-host/src/main/java/com/tencent/shadow/sample/host/PluginLoadActivity.java b/projects/sample/source/sample-host/src/main/java/com/tencent/shadow/sample/host/PluginLoadActivity.java
index 56c7297ed..8f71462b0 100644
--- a/projects/sample/source/sample-host/src/main/java/com/tencent/shadow/sample/host/PluginLoadActivity.java
+++ b/projects/sample/source/sample-host/src/main/java/com/tencent/shadow/sample/host/PluginLoadActivity.java
@@ -21,11 +21,13 @@
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
+import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import com.tencent.shadow.dynamic.host.EnterCallback;
import com.tencent.shadow.sample.constant.Constant;
+import com.tencent.shadow.sample.host.lib.HostCallbackProvider;
public class PluginLoadActivity extends Activity {
@@ -43,6 +45,14 @@ protected void onCreate(Bundle savedInstanceState) {
mViewGroup = findViewById(R.id.container);
startPlugin();
+
+ new Handler().postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ Log.i("test", "start....");
+ HostCallbackProvider.getInstance().call();
+ }
+ }, 15000);
}
diff --git a/projects/sample/source/sample-plugin/sample-app-lib/src/main/AndroidManifest.xml b/projects/sample/source/sample-plugin/sample-app-lib/src/main/AndroidManifest.xml
index 1a54019f1..2781885df 100644
--- a/projects/sample/source/sample-plugin/sample-app-lib/src/main/AndroidManifest.xml
+++ b/projects/sample/source/sample-plugin/sample-app-lib/src/main/AndroidManifest.xml
@@ -69,6 +69,7 @@
+