From f5e9f1126dd2ceff99d9d3cd63a93d1f56eb3298 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E9=A3=9E?= Date: Sat, 21 Dec 2019 16:06:35 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E9=80=82=E9=85=8Dflutter=201.12?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/build.gradle | 1 + .../filereader/FlutterFileReaderPlugin.java | 54 ++++++++++++++----- 2 files changed, 43 insertions(+), 12 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 89118c4..ecba7a8 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -22,6 +22,7 @@ android { defaultConfig { minSdkVersion 16 + ndk{abiFilters "armeabi-v7a"} } lintOptions { disable 'InvalidPackage' diff --git a/android/src/main/java/com/webview/filereader/FlutterFileReaderPlugin.java b/android/src/main/java/com/webview/filereader/FlutterFileReaderPlugin.java index 74d776f..3c34d26 100644 --- a/android/src/main/java/com/webview/filereader/FlutterFileReaderPlugin.java +++ b/android/src/main/java/com/webview/filereader/FlutterFileReaderPlugin.java @@ -1,5 +1,6 @@ package com.webview.filereader; +import android.app.Activity; import android.content.Context; import android.content.IntentFilter; import android.os.Handler; @@ -15,14 +16,17 @@ import java.util.HashMap; +import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; import io.flutter.plugin.common.PluginRegistry.Registrar; +import io.flutter.embedding.engine.plugins.FlutterPlugin; + /** * FlutterX5Plugin */ -public class FlutterFileReaderPlugin implements MethodChannel.MethodCallHandler { +public class FlutterFileReaderPlugin implements FlutterPlugin, MethodChannel.MethodCallHandler { private int x5LoadStatus = -1; // -1 未加载状态 5 成功 10 失败 @@ -43,13 +47,27 @@ public boolean handleMessage(Message msg) { }); - private FlutterFileReaderPlugin(Registrar registrar) { - ctx = registrar.context(); - act = registrar.activity(); - methodChannel = new MethodChannel(registrar.messenger(), channelName); +// private FlutterFileReaderPlugin(Registrar registrar) { +// ctx = registrar.context(); +// act = registrar.activity(); +// methodChannel = new MethodChannel(registrar.messenger(), channelName); +// methodChannel.setMethodCallHandler(this); +// initX5(registrar.context()); +// netBroadcastRegister(registrar.context()); +// +// } +// + public FlutterFileReaderPlugin(Activity activity){ + act = activity; + } + + private void loadParameters(FlutterPluginBinding binding) { + ctx = binding.getApplicationContext(); +// act = binding.getApplicationContext(); + methodChannel = new MethodChannel(binding.getBinaryMessenger(), channelName); methodChannel.setMethodCallHandler(this); - initX5(registrar.context()); - netBroadcastRegister(registrar.context()); + initX5(binding.getApplicationContext()); + netBroadcastRegister(binding.getApplicationContext()); } @@ -57,11 +75,11 @@ private FlutterFileReaderPlugin(Registrar registrar) { /** * Plugin registration. */ - public static void registerWith(Registrar registrar) { - FlutterFileReaderPlugin plugin = new FlutterFileReaderPlugin(registrar); - registrar.platformViewRegistry().registerViewFactory("FileReader", new X5FileReaderFactory(registrar.messenger(), registrar.activity(),plugin)); - - } +// public static void registerWith(Registrar registrar) { +// FlutterFileReaderPlugin plugin = new FlutterFileReaderPlugin(registrar); +// registrar.platformViewRegistry().registerViewFactory("FileReader", new X5FileReaderFactory(registrar.messenger(), registrar.activity(),plugin)); +// +// } public void netBroadcastRegister(final Context context) { @@ -178,5 +196,17 @@ int isLoadX5() { } return x5LoadStatus; } + + @Override + public void onAttachedToEngine(FlutterPluginBinding binding) { + this.loadParameters(binding); + binding.getPlatformViewRegistry().registerViewFactory("FileReader", new X5FileReaderFactory(binding.getBinaryMessenger(), act, this)); +// Log.d("FileReader","onAttachedToEngine->"); + } + + @Override + public void onDetachedFromEngine(FlutterPluginBinding binding) { + + } } From 9cd3812f247f051203be76fa5e5d2b013550ae1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E9=A3=9E?= Date: Sat, 21 Dec 2019 17:22:19 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0UI=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filereader/FlutterFileReaderPlugin.java | 50 +++++++++---------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/android/src/main/java/com/webview/filereader/FlutterFileReaderPlugin.java b/android/src/main/java/com/webview/filereader/FlutterFileReaderPlugin.java index 3c34d26..2fe2b4a 100644 --- a/android/src/main/java/com/webview/filereader/FlutterFileReaderPlugin.java +++ b/android/src/main/java/com/webview/filereader/FlutterFileReaderPlugin.java @@ -16,6 +16,8 @@ import java.util.HashMap; +import io.flutter.embedding.engine.plugins.activity.ActivityAware; +import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; @@ -26,7 +28,7 @@ /** * FlutterX5Plugin */ -public class FlutterFileReaderPlugin implements FlutterPlugin, MethodChannel.MethodCallHandler { +public class FlutterFileReaderPlugin implements FlutterPlugin, ActivityAware, MethodChannel.MethodCallHandler { private int x5LoadStatus = -1; // -1 未加载状态 5 成功 10 失败 @@ -47,23 +49,8 @@ public boolean handleMessage(Message msg) { }); -// private FlutterFileReaderPlugin(Registrar registrar) { -// ctx = registrar.context(); -// act = registrar.activity(); -// methodChannel = new MethodChannel(registrar.messenger(), channelName); -// methodChannel.setMethodCallHandler(this); -// initX5(registrar.context()); -// netBroadcastRegister(registrar.context()); -// -// } -// - public FlutterFileReaderPlugin(Activity activity){ - act = activity; - } - private void loadParameters(FlutterPluginBinding binding) { ctx = binding.getApplicationContext(); -// act = binding.getApplicationContext(); methodChannel = new MethodChannel(binding.getBinaryMessenger(), channelName); methodChannel.setMethodCallHandler(this); initX5(binding.getApplicationContext()); @@ -72,16 +59,6 @@ private void loadParameters(FlutterPluginBinding binding) { } - /** - * Plugin registration. - */ -// public static void registerWith(Registrar registrar) { -// FlutterFileReaderPlugin plugin = new FlutterFileReaderPlugin(registrar); -// registrar.platformViewRegistry().registerViewFactory("FileReader", new X5FileReaderFactory(registrar.messenger(), registrar.activity(),plugin)); -// -// } - - public void netBroadcastRegister(final Context context) { //实例化IntentFilter对象 IntentFilter filter = new IntentFilter(); @@ -201,12 +178,31 @@ int isLoadX5() { public void onAttachedToEngine(FlutterPluginBinding binding) { this.loadParameters(binding); binding.getPlatformViewRegistry().registerViewFactory("FileReader", new X5FileReaderFactory(binding.getBinaryMessenger(), act, this)); -// Log.d("FileReader","onAttachedToEngine->"); } @Override public void onDetachedFromEngine(FlutterPluginBinding binding) { } + + @Override + public void onAttachedToActivity(ActivityPluginBinding binding) { + ctx = binding.getActivity(); + } + + @Override + public void onDetachedFromActivityForConfigChanges() { + + } + + @Override + public void onReattachedToActivityForConfigChanges(ActivityPluginBinding binding) { + + } + + @Override + public void onDetachedFromActivity() { + ctx = null; + } } From a42c5290134c15abc3bca446c2f4482b78b4f0a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E9=A3=9E?= Date: Sat, 21 Dec 2019 20:57:02 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filereader/FlutterFileReaderPlugin.java | 59 ++++++++++--------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/android/src/main/java/com/webview/filereader/FlutterFileReaderPlugin.java b/android/src/main/java/com/webview/filereader/FlutterFileReaderPlugin.java index 2fe2b4a..555827f 100644 --- a/android/src/main/java/com/webview/filereader/FlutterFileReaderPlugin.java +++ b/android/src/main/java/com/webview/filereader/FlutterFileReaderPlugin.java @@ -1,6 +1,5 @@ package com.webview.filereader; -import android.app.Activity; import android.content.Context; import android.content.IntentFilter; import android.os.Handler; @@ -12,16 +11,13 @@ import com.tencent.smtt.sdk.QbSdk; import com.tencent.smtt.sdk.TbsListener; import com.tencent.smtt.sdk.ValueCallback; -import com.tencent.smtt.sdk.WebView; import java.util.HashMap; import io.flutter.embedding.engine.plugins.activity.ActivityAware; import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding; -import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; -import io.flutter.plugin.common.PluginRegistry.Registrar; import io.flutter.embedding.engine.plugins.FlutterPlugin; @@ -32,9 +28,13 @@ public class FlutterFileReaderPlugin implements FlutterPlugin, ActivityAware, Me private int x5LoadStatus = -1; // -1 未加载状态 5 成功 10 失败 + private static String TAG = "FileReader"; + public static final String channelName = "wv.io/FileReader"; + private FlutterPluginBinding flutterPluginBinding; + private Context ctx; - private Context act; + private Context activityContext; private MethodChannel methodChannel; private Handler mainHandler = new Handler(Looper.getMainLooper(), new Handler.Callback() { @Override @@ -49,13 +49,16 @@ public boolean handleMessage(Message msg) { }); + public FlutterFileReaderPlugin(){ + Log.d(TAG,"init"); + } + private void loadParameters(FlutterPluginBinding binding) { ctx = binding.getApplicationContext(); methodChannel = new MethodChannel(binding.getBinaryMessenger(), channelName); methodChannel.setMethodCallHandler(this); initX5(binding.getApplicationContext()); netBroadcastRegister(binding.getApplicationContext()); - } @@ -67,20 +70,18 @@ public void netBroadcastRegister(final Context context) { @Override public void onChangeListener(int status) { if (!QbSdk.canLoadX5(context)) { - // Log.d("FileReader", "网络变化->加载x5内核"); + // Log.d(TAG, "网络变化->加载x5内核"); initX5(context); } } }); //注册广播接收 context.registerReceiver(netBroadcastReceiver, filter); - - } public void initX5(final Context context) { - Log.d("FileReader","初始化X5->"+QbSdk.canLoadX5(context)); + Log.d(TAG,"初始化X5->"+QbSdk.canLoadX5(context)); if(!QbSdk.canLoadX5(context)){ //重要 QbSdk.reset(context); @@ -96,7 +97,7 @@ public void initX5(final Context context) { QbSdk.setTbsListener(new TbsListener() { @Override public void onDownloadFinish(int i) { - Log.d("FileReader", "TBS下载完成"); + Log.d(TAG, "TBS下载完成"); } @Override @@ -106,14 +107,14 @@ public void onInstallFinish(int i) { @Override public void onDownloadProgress(int i) { - Log.d("FileReader", "TBS下载进度:" + i); + Log.d(TAG, "TBS下载进度:" + i); } }); QbSdk.initX5Environment(context, new QbSdk.PreInitCallback() { @Override public void onCoreInitFinished() { - Log.d("FileReader", "TBS内核初始化结束"); + Log.d(TAG, "TBS内核初始化结束"); } @Override @@ -123,14 +124,12 @@ public void onViewInitFinished(boolean b) { } else { x5LoadStatus = 10; } - // Log.d("FileReader", "view初始化完成状态:" + b); - Log.d("FileReader", "TBS内核状态:" + QbSdk.canLoadX5(context)); + // Log.d(TAG, "view初始化完成状态:" + b); + Log.d(TAG, "TBS内核状态:" + QbSdk.canLoadX5(context)); onX5LoadComplete(); } }); - - } @Override @@ -149,11 +148,10 @@ public boolean openFileByMiniQb(String filePath){ params.put("style", "1"); params.put("local", "false"); - - QbSdk.openFileReader(act, filePath, params, new ValueCallback() { + QbSdk.openFileReader(activityContext, filePath, params, new ValueCallback() { @Override public void onReceiveValue(String s) { - Log.d("FileReader","openFileReader->"+s); + Log.d(TAG,"openFileReader->"+s); } }); @@ -168,7 +166,7 @@ private void onX5LoadComplete() { int isLoadX5() { if(QbSdk.canLoadX5(ctx)){ - // Log.d("FileReader","x5 is Load"); + // Log.d(TAG,"x5 is Load"); x5LoadStatus = 5; } return x5LoadStatus; @@ -176,33 +174,38 @@ int isLoadX5() { @Override public void onAttachedToEngine(FlutterPluginBinding binding) { - this.loadParameters(binding); - binding.getPlatformViewRegistry().registerViewFactory("FileReader", new X5FileReaderFactory(binding.getBinaryMessenger(), act, this)); + this.flutterPluginBinding = binding; +// + Log.d(TAG, "onAttachedToEngine"); } @Override public void onDetachedFromEngine(FlutterPluginBinding binding) { - + Log.d(TAG, "onDetachedFromEngine"); } @Override public void onAttachedToActivity(ActivityPluginBinding binding) { - ctx = binding.getActivity(); + this.activityContext = binding.getActivity(); + this.loadParameters(this.flutterPluginBinding); + this.flutterPluginBinding.getPlatformViewRegistry().registerViewFactory("FileReader", new X5FileReaderFactory(this.flutterPluginBinding.getBinaryMessenger(), this.activityContext, this)); + Log.d(TAG, "onAttachedToActivity"); } @Override public void onDetachedFromActivityForConfigChanges() { - + Log.d(TAG, "onDetachedFromActivityForConfigChanges"); } @Override public void onReattachedToActivityForConfigChanges(ActivityPluginBinding binding) { - + Log.d(TAG, "onReattachedToActivityForConfigChanges"); } @Override public void onDetachedFromActivity() { - ctx = null; + Log.d(TAG, "onDetachedFromActivity"); + activityContext = null; } }