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 @@ +