From 08319ab195905bd92319dfd37da2ccba28c85648 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Tue, 8 Oct 2019 09:34:38 -0700 Subject: [PATCH 01/18] migrate --- .../quickactions/MethodCallHandlerImpl.java | 130 +++++++++++++++++ .../quickactions/QuickActionsPlugin.java | 137 +++++------------- .../android/app/src/main/AndroidManifest.xml | 8 + .../quickactionexample/MainActivity.java | 14 ++ .../example/android/gradle.properties | 3 + 5 files changed, 193 insertions(+), 99 deletions(-) create mode 100644 packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java create mode 100644 packages/quick_actions/example/android/app/src/main/java/dev/flutter/plugins/quickactionexample/MainActivity.java diff --git a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java new file mode 100644 index 000000000000..4096c61293cc --- /dev/null +++ b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java @@ -0,0 +1,130 @@ +package io.flutter.plugins.quickactions; + +import android.annotation.TargetApi; +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.content.pm.ShortcutInfo; +import android.content.pm.ShortcutManager; +import android.content.res.Resources; +import android.graphics.drawable.Icon; +import android.os.Build; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + + +class MethodCallHandlerImpl implements MethodChannel.MethodCallHandler { + + private static final String CHANNEL_ID = "plugins.flutter.io/quick_actions"; + private static final String EXTRA_ACTION = "some unique action key"; + + private final Context context; + private Activity activity; + + MethodCallHandlerImpl(@NonNull Context context, @Nullable Activity activity) { + this.context = context; + this.activity = activity; + } + + void setActivity(Activity activity) { + this.activity = activity; + } + + @Override + public void onMethodCall(MethodCall call, MethodChannel.Result result) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) { + // We already know that this functionality does not work for anything + // lower than API 25 so we chose not to return error. Instead we do nothing. + result.success(null); + return; + } + ShortcutManager shortcutManager = + (ShortcutManager) context.getSystemService(Context.SHORTCUT_SERVICE); + switch (call.method) { + case "setShortcutItems": + List> serializedShortcuts = call.arguments(); + List shortcuts = deserializeShortcuts(serializedShortcuts); + shortcutManager.setDynamicShortcuts(shortcuts); + break; + case "clearShortcutItems": + shortcutManager.removeAllDynamicShortcuts(); + break; + case "getLaunchAction": + if (activity == null) { + result.error("quick_action_getlaunchaction_no_activity", "There is no activity available when launching action", null); + return; + } + final Intent intent = activity.getIntent(); + final String launchAction = intent.getStringExtra(EXTRA_ACTION); + if (launchAction != null && !launchAction.isEmpty()) { + shortcutManager.reportShortcutUsed(launchAction); + intent.removeExtra(EXTRA_ACTION); + } + result.success(launchAction); + return; + default: + result.notImplemented(); + return; + } + result.success(null); + } + + @TargetApi(Build.VERSION_CODES.N_MR1) + private List deserializeShortcuts(List> shortcuts) { + final List shortcutInfos = new ArrayList<>(); + + for (Map shortcut : shortcuts) { + final String icon = shortcut.get("icon"); + final String type = shortcut.get("type"); + final String title = shortcut.get("localizedTitle"); + final ShortcutInfo.Builder shortcutBuilder = new ShortcutInfo.Builder(context, type); + + final int resourceId = loadResourceId(context, icon); + final Intent intent = getIntentToOpenMainActivity(type); + + if (resourceId > 0) { + shortcutBuilder.setIcon(Icon.createWithResource(context, resourceId)); + } + + final ShortcutInfo shortcutInfo = + shortcutBuilder.setLongLabel(title).setShortLabel(title).setIntent(intent).build(); + shortcutInfos.add(shortcutInfo); + } + return shortcutInfos; + } + + private int loadResourceId(Context context, String icon) { + if (icon == null) { + return 0; + } + final String packageName = context.getPackageName(); + final Resources res = context.getResources(); + final int resourceId = res.getIdentifier(icon, "drawable", packageName); + + if (resourceId == 0) { + return res.getIdentifier(icon, "mipmap", packageName); + } else { + return resourceId; + } + } + + private Intent getIntentToOpenMainActivity(String type) { + final String packageName = context.getPackageName(); + + return context + .getPackageManager() + .getLaunchIntentForPackage(packageName) + .setAction(Intent.ACTION_RUN) + .putExtra(EXTRA_ACTION, type) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); + } +} diff --git a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java index 3a4ba2410666..077878bf2396 100644 --- a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java +++ b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java @@ -4,33 +4,23 @@ package io.flutter.plugins.quickactions; -import android.annotation.TargetApi; +import android.app.Activity; import android.content.Context; -import android.content.Intent; -import android.content.pm.ShortcutInfo; -import android.content.pm.ShortcutManager; -import android.content.res.Resources; -import android.graphics.drawable.Icon; -import android.os.Build; -import io.flutter.plugin.common.MethodCall; + +import io.flutter.embedding.engine.plugins.FlutterPlugin; +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.MethodChannel; -import io.flutter.plugin.common.MethodChannel.MethodCallHandler; -import io.flutter.plugin.common.MethodChannel.Result; import io.flutter.plugin.common.PluginRegistry.Registrar; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; + /** QuickActionsPlugin */ -public class QuickActionsPlugin implements MethodCallHandler { +public class QuickActionsPlugin implements FlutterPlugin, ActivityAware { private static final String CHANNEL_ID = "plugins.flutter.io/quick_actions"; - private static final String EXTRA_ACTION = "some unique action key"; - private final Registrar registrar; - - private QuickActionsPlugin(Registrar registrar) { - this.registrar = registrar; - } + MethodChannel channel; + MethodCallHandlerImpl handler; /** * Plugin registration. @@ -38,96 +28,45 @@ private QuickActionsPlugin(Registrar registrar) { *

Must be called when the application is created. */ public static void registerWith(Registrar registrar) { - final MethodChannel channel = new MethodChannel(registrar.messenger(), CHANNEL_ID); - channel.setMethodCallHandler(new QuickActionsPlugin(registrar)); + QuickActionsPlugin plugin = new QuickActionsPlugin(); + plugin.setupChannel(registrar.messenger(), registrar.context(), registrar.activity()); } @Override - public void onMethodCall(MethodCall call, Result result) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) { - // We already know that this functionality does not work for anything - // lower than API 25 so we chose not to return error. Instead we do nothing. - result.success(null); - return; - } - Context context = registrar.context(); - ShortcutManager shortcutManager = - (ShortcutManager) context.getSystemService(Context.SHORTCUT_SERVICE); - switch (call.method) { - case "setShortcutItems": - List> serializedShortcuts = call.arguments(); - List shortcuts = deserializeShortcuts(serializedShortcuts); - shortcutManager.setDynamicShortcuts(shortcuts); - break; - case "clearShortcutItems": - shortcutManager.removeAllDynamicShortcuts(); - break; - case "getLaunchAction": - final Intent intent = registrar.activity().getIntent(); - final String launchAction = intent.getStringExtra(EXTRA_ACTION); - if (launchAction != null && !launchAction.isEmpty()) { - shortcutManager.reportShortcutUsed(launchAction); - intent.removeExtra(EXTRA_ACTION); - } - result.success(launchAction); - return; - default: - result.notImplemented(); - return; - } - result.success(null); + public void onAttachedToEngine(FlutterPluginBinding binding) { + setupChannel(binding.getFlutterEngine().getDartExecutor(), binding.getApplicationContext(), null); } - @TargetApi(Build.VERSION_CODES.N_MR1) - private List deserializeShortcuts(List> shortcuts) { - final List shortcutInfos = new ArrayList<>(); - final Context context = registrar.context(); - - for (Map shortcut : shortcuts) { - final String icon = shortcut.get("icon"); - final String type = shortcut.get("type"); - final String title = shortcut.get("localizedTitle"); - final ShortcutInfo.Builder shortcutBuilder = new ShortcutInfo.Builder(context, type); - - final int resourceId = loadResourceId(context, icon); - final Intent intent = getIntentToOpenMainActivity(type); - - if (resourceId > 0) { - shortcutBuilder.setIcon(Icon.createWithResource(context, resourceId)); - } + @Override + public void onDetachedFromEngine(FlutterPluginBinding binding) { + channel.setMethodCallHandler(null); + handler = null; + } - final ShortcutInfo shortcutInfo = - shortcutBuilder.setLongLabel(title).setShortLabel(title).setIntent(intent).build(); - shortcutInfos.add(shortcutInfo); - } - return shortcutInfos; + @Override + public void onAttachedToActivity(ActivityPluginBinding binding) { + handler.setActivity(binding.getActivity()); } - private int loadResourceId(Context context, String icon) { - if (icon == null) { - return 0; - } - final String packageName = context.getPackageName(); - final Resources res = context.getResources(); - final int resourceId = res.getIdentifier(icon, "drawable", packageName); + @Override + public void onDetachedFromActivity() { + handler.setActivity(null); + } - if (resourceId == 0) { - return res.getIdentifier(icon, "mipmap", packageName); - } else { - return resourceId; - } + @Override + public void onReattachedToActivityForConfigChanges(ActivityPluginBinding binding) { + onAttachedToActivity(binding); } - private Intent getIntentToOpenMainActivity(String type) { - final Context context = registrar.context(); - final String packageName = context.getPackageName(); + @Override + public void onDetachedFromActivityForConfigChanges() { + onDetachedFromActivity(); + } - return context - .getPackageManager() - .getLaunchIntentForPackage(packageName) - .setAction(Intent.ACTION_RUN) - .putExtra(EXTRA_ACTION, type) - .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); + private void setupChannel(BinaryMessenger messenger, Context context, Activity activity) { + channel = new MethodChannel(messenger, CHANNEL_ID); + handler = new MethodCallHandlerImpl(context, activity); + channel.setMethodCallHandler(handler); } + } diff --git a/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml b/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml index bb7a1351d343..e28796f2bb0c 100644 --- a/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml +++ b/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml @@ -12,6 +12,14 @@ android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"> + + + diff --git a/packages/quick_actions/example/android/app/src/main/java/dev/flutter/plugins/quickactionexample/MainActivity.java b/packages/quick_actions/example/android/app/src/main/java/dev/flutter/plugins/quickactionexample/MainActivity.java new file mode 100644 index 000000000000..cad61336bb3b --- /dev/null +++ b/packages/quick_actions/example/android/app/src/main/java/dev/flutter/plugins/quickactionexample/MainActivity.java @@ -0,0 +1,14 @@ +package dev.flutter.plugins.quickactionexample; + +import io.flutter.embedding.android.FlutterActivity; +import io.flutter.embedding.engine.FlutterEngine; +import io.flutter.plugins.quickactions.QuickActionsPlugin; + +public class MainActivity extends FlutterActivity { + + @Override + public void configureFlutterEngine(FlutterEngine flutterEngine) { + super.configureFlutterEngine(flutterEngine); + flutterEngine.getPlugins().add(new QuickActionsPlugin()); + } +} \ No newline at end of file diff --git a/packages/quick_actions/example/android/gradle.properties b/packages/quick_actions/example/android/gradle.properties index 8bd86f680510..38c8d4544ff1 100644 --- a/packages/quick_actions/example/android/gradle.properties +++ b/packages/quick_actions/example/android/gradle.properties @@ -1 +1,4 @@ org.gradle.jvmargs=-Xmx1536M +android.enableR8=true +android.useAndroidX=true +android.enableJetifier=true From 87d33468e8e78a4ce23455afddac111546d8f0e8 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Tue, 8 Oct 2019 11:35:33 -0700 Subject: [PATCH 02/18] migrate --- .../quickactions/MethodCallHandlerImpl.java | 187 +++++++++--------- .../quickactions/QuickActionsPlugin.java | 11 +- .../android/app/src/main/AndroidManifest.xml | 15 +- .../quickactionexample/MainActivity.java | 12 +- 4 files changed, 112 insertions(+), 113 deletions(-) diff --git a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java index 4096c61293cc..92ac0479f18e 100644 --- a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java +++ b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java @@ -9,122 +9,121 @@ import android.content.res.Resources; import android.graphics.drawable.Icon; import android.os.Build; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; - +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; import java.util.ArrayList; import java.util.List; import java.util.Map; -import io.flutter.plugin.common.MethodCall; -import io.flutter.plugin.common.MethodChannel; - - class MethodCallHandlerImpl implements MethodChannel.MethodCallHandler { - private static final String CHANNEL_ID = "plugins.flutter.io/quick_actions"; - private static final String EXTRA_ACTION = "some unique action key"; + private static final String CHANNEL_ID = "plugins.flutter.io/quick_actions"; + private static final String EXTRA_ACTION = "some unique action key"; - private final Context context; - private Activity activity; + private final Context context; + private Activity activity; - MethodCallHandlerImpl(@NonNull Context context, @Nullable Activity activity) { - this.context = context; - this.activity = activity; - } + MethodCallHandlerImpl(@NonNull Context context, @Nullable Activity activity) { + this.context = context; + this.activity = activity; + } - void setActivity(Activity activity) { - this.activity = activity; - } + void setActivity(Activity activity) { + this.activity = activity; + } - @Override - public void onMethodCall(MethodCall call, MethodChannel.Result result) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) { - // We already know that this functionality does not work for anything - // lower than API 25 so we chose not to return error. Instead we do nothing. - result.success(null); - return; + @Override + public void onMethodCall(MethodCall call, MethodChannel.Result result) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) { + // We already know that this functionality does not work for anything + // lower than API 25 so we chose not to return error. Instead we do nothing. + result.success(null); + return; + } + ShortcutManager shortcutManager = + (ShortcutManager) context.getSystemService(Context.SHORTCUT_SERVICE); + switch (call.method) { + case "setShortcutItems": + List> serializedShortcuts = call.arguments(); + List shortcuts = deserializeShortcuts(serializedShortcuts); + shortcutManager.setDynamicShortcuts(shortcuts); + break; + case "clearShortcutItems": + shortcutManager.removeAllDynamicShortcuts(); + break; + case "getLaunchAction": + if (activity == null) { + result.error( + "quick_action_getlaunchaction_no_activity", + "There is no activity available when launching action", + null); + return; } - ShortcutManager shortcutManager = - (ShortcutManager) context.getSystemService(Context.SHORTCUT_SERVICE); - switch (call.method) { - case "setShortcutItems": - List> serializedShortcuts = call.arguments(); - List shortcuts = deserializeShortcuts(serializedShortcuts); - shortcutManager.setDynamicShortcuts(shortcuts); - break; - case "clearShortcutItems": - shortcutManager.removeAllDynamicShortcuts(); - break; - case "getLaunchAction": - if (activity == null) { - result.error("quick_action_getlaunchaction_no_activity", "There is no activity available when launching action", null); - return; - } - final Intent intent = activity.getIntent(); - final String launchAction = intent.getStringExtra(EXTRA_ACTION); - if (launchAction != null && !launchAction.isEmpty()) { - shortcutManager.reportShortcutUsed(launchAction); - intent.removeExtra(EXTRA_ACTION); - } - result.success(launchAction); - return; - default: - result.notImplemented(); - return; + final Intent intent = activity.getIntent(); + final String launchAction = intent.getStringExtra(EXTRA_ACTION); + if (launchAction != null && !launchAction.isEmpty()) { + shortcutManager.reportShortcutUsed(launchAction); + intent.removeExtra(EXTRA_ACTION); } - result.success(null); + result.success(launchAction); + return; + default: + result.notImplemented(); + return; } + result.success(null); + } - @TargetApi(Build.VERSION_CODES.N_MR1) - private List deserializeShortcuts(List> shortcuts) { - final List shortcutInfos = new ArrayList<>(); + @TargetApi(Build.VERSION_CODES.N_MR1) + private List deserializeShortcuts(List> shortcuts) { + final List shortcutInfos = new ArrayList<>(); - for (Map shortcut : shortcuts) { - final String icon = shortcut.get("icon"); - final String type = shortcut.get("type"); - final String title = shortcut.get("localizedTitle"); - final ShortcutInfo.Builder shortcutBuilder = new ShortcutInfo.Builder(context, type); + for (Map shortcut : shortcuts) { + final String icon = shortcut.get("icon"); + final String type = shortcut.get("type"); + final String title = shortcut.get("localizedTitle"); + final ShortcutInfo.Builder shortcutBuilder = new ShortcutInfo.Builder(context, type); - final int resourceId = loadResourceId(context, icon); - final Intent intent = getIntentToOpenMainActivity(type); + final int resourceId = loadResourceId(context, icon); + final Intent intent = getIntentToOpenMainActivity(type); - if (resourceId > 0) { - shortcutBuilder.setIcon(Icon.createWithResource(context, resourceId)); - } + if (resourceId > 0) { + shortcutBuilder.setIcon(Icon.createWithResource(context, resourceId)); + } - final ShortcutInfo shortcutInfo = - shortcutBuilder.setLongLabel(title).setShortLabel(title).setIntent(intent).build(); - shortcutInfos.add(shortcutInfo); - } - return shortcutInfos; + final ShortcutInfo shortcutInfo = + shortcutBuilder.setLongLabel(title).setShortLabel(title).setIntent(intent).build(); + shortcutInfos.add(shortcutInfo); } + return shortcutInfos; + } - private int loadResourceId(Context context, String icon) { - if (icon == null) { - return 0; - } - final String packageName = context.getPackageName(); - final Resources res = context.getResources(); - final int resourceId = res.getIdentifier(icon, "drawable", packageName); - - if (resourceId == 0) { - return res.getIdentifier(icon, "mipmap", packageName); - } else { - return resourceId; - } + private int loadResourceId(Context context, String icon) { + if (icon == null) { + return 0; } - - private Intent getIntentToOpenMainActivity(String type) { - final String packageName = context.getPackageName(); - - return context - .getPackageManager() - .getLaunchIntentForPackage(packageName) - .setAction(Intent.ACTION_RUN) - .putExtra(EXTRA_ACTION, type) - .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); + final String packageName = context.getPackageName(); + final Resources res = context.getResources(); + final int resourceId = res.getIdentifier(icon, "drawable", packageName); + + if (resourceId == 0) { + return res.getIdentifier(icon, "mipmap", packageName); + } else { + return resourceId; } + } + + private Intent getIntentToOpenMainActivity(String type) { + final String packageName = context.getPackageName(); + + return context + .getPackageManager() + .getLaunchIntentForPackage(packageName) + .setAction(Intent.ACTION_RUN) + .putExtra(EXTRA_ACTION, type) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); + } } diff --git a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java index 077878bf2396..c08305db41ef 100644 --- a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java +++ b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java @@ -6,7 +6,8 @@ import android.app.Activity; import android.content.Context; - +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import io.flutter.embedding.engine.plugins.FlutterPlugin; import io.flutter.embedding.engine.plugins.activity.ActivityAware; import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding; @@ -14,7 +15,6 @@ import io.flutter.plugin.common.MethodChannel; import io.flutter.plugin.common.PluginRegistry.Registrar; - /** QuickActionsPlugin */ public class QuickActionsPlugin implements FlutterPlugin, ActivityAware { private static final String CHANNEL_ID = "plugins.flutter.io/quick_actions"; @@ -34,7 +34,8 @@ public static void registerWith(Registrar registrar) { @Override public void onAttachedToEngine(FlutterPluginBinding binding) { - setupChannel(binding.getFlutterEngine().getDartExecutor(), binding.getApplicationContext(), null); + setupChannel( + binding.getFlutterEngine().getDartExecutor(), binding.getApplicationContext(), null); } @Override @@ -63,10 +64,10 @@ public void onDetachedFromActivityForConfigChanges() { onDetachedFromActivity(); } - private void setupChannel(BinaryMessenger messenger, Context context, Activity activity) { + private void setupChannel( + @NonNull BinaryMessenger messenger, @NonNull Context context, @Nullable Activity activity) { channel = new MethodChannel(messenger, CHANNEL_ID); handler = new MethodCallHandlerImpl(context, activity); channel.setMethodCallHandler(handler); } - } diff --git a/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml b/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml index e28796f2bb0c..c433522207a7 100644 --- a/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml +++ b/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml @@ -12,17 +12,16 @@ android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"> - - - + + diff --git a/packages/quick_actions/example/android/app/src/main/java/dev/flutter/plugins/quickactionexample/MainActivity.java b/packages/quick_actions/example/android/app/src/main/java/dev/flutter/plugins/quickactionexample/MainActivity.java index cad61336bb3b..2908fff275d5 100644 --- a/packages/quick_actions/example/android/app/src/main/java/dev/flutter/plugins/quickactionexample/MainActivity.java +++ b/packages/quick_actions/example/android/app/src/main/java/dev/flutter/plugins/quickactionexample/MainActivity.java @@ -6,9 +6,9 @@ public class MainActivity extends FlutterActivity { - @Override - public void configureFlutterEngine(FlutterEngine flutterEngine) { - super.configureFlutterEngine(flutterEngine); - flutterEngine.getPlugins().add(new QuickActionsPlugin()); - } -} \ No newline at end of file + @Override + public void configureFlutterEngine(FlutterEngine flutterEngine) { + super.configureFlutterEngine(flutterEngine); + flutterEngine.getPlugins().add(new QuickActionsPlugin()); + } +} From dbfbcf474944c3e5b95969ccabcdb2f368904636 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Tue, 8 Oct 2019 12:42:36 -0700 Subject: [PATCH 03/18] rename activities --- .../android/app/src/main/AndroidManifest.xml | 7 ++++--- .../quickactionexample/MainActivity.java | 14 -------------- .../EmbeddingV1Activity.java | 17 +++++++++++++++++ .../quickactionsexample/MainActivity.java | 17 +++++++---------- 4 files changed, 28 insertions(+), 27 deletions(-) delete mode 100644 packages/quick_actions/example/android/app/src/main/java/dev/flutter/plugins/quickactionexample/MainActivity.java create mode 100644 packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/EmbeddingV1Activity.java diff --git a/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml b/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml index c433522207a7..e569c954f31c 100644 --- a/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml +++ b/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml @@ -6,7 +6,7 @@ - - + android:windowSoftInputMode="adjustResize" + android:exported="true"> diff --git a/packages/quick_actions/example/android/app/src/main/java/dev/flutter/plugins/quickactionexample/MainActivity.java b/packages/quick_actions/example/android/app/src/main/java/dev/flutter/plugins/quickactionexample/MainActivity.java deleted file mode 100644 index 2908fff275d5..000000000000 --- a/packages/quick_actions/example/android/app/src/main/java/dev/flutter/plugins/quickactionexample/MainActivity.java +++ /dev/null @@ -1,14 +0,0 @@ -package dev.flutter.plugins.quickactionexample; - -import io.flutter.embedding.android.FlutterActivity; -import io.flutter.embedding.engine.FlutterEngine; -import io.flutter.plugins.quickactions.QuickActionsPlugin; - -public class MainActivity extends FlutterActivity { - - @Override - public void configureFlutterEngine(FlutterEngine flutterEngine) { - super.configureFlutterEngine(flutterEngine); - flutterEngine.getPlugins().add(new QuickActionsPlugin()); - } -} diff --git a/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/EmbeddingV1Activity.java b/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/EmbeddingV1Activity.java new file mode 100644 index 000000000000..ba6a64d997bc --- /dev/null +++ b/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/EmbeddingV1Activity.java @@ -0,0 +1,17 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package io.flutter.plugins.quickactionsexample; + +import android.os.Bundle; +import io.flutter.app.FlutterActivity; +import io.flutter.plugins.GeneratedPluginRegistrant; + +public class EmbeddingV1Activity extends FlutterActivity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + GeneratedPluginRegistrant.registerWith(this); + } +} diff --git a/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivity.java b/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivity.java index 74e3eb873cbc..0640dc5b6c29 100644 --- a/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivity.java +++ b/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivity.java @@ -1,17 +1,14 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - package io.flutter.plugins.quickactionsexample; -import android.os.Bundle; -import io.flutter.app.FlutterActivity; -import io.flutter.plugins.GeneratedPluginRegistrant; +import io.flutter.embedding.android.FlutterActivity; +import io.flutter.embedding.engine.FlutterEngine; +import io.flutter.plugins.quickactions.QuickActionsPlugin; public class MainActivity extends FlutterActivity { + @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - GeneratedPluginRegistrant.registerWith(this); + public void configureFlutterEngine(FlutterEngine flutterEngine) { + super.configureFlutterEngine(flutterEngine); + flutterEngine.getPlugins().add(new QuickActionsPlugin()); } } From 7bed9d868b257e0b56580d251272a47daa864e50 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Tue, 8 Oct 2019 12:43:51 -0700 Subject: [PATCH 04/18] add exported=true --- .../example/android/app/src/main/AndroidManifest.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml b/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml index e569c954f31c..9da1b790f92a 100644 --- a/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml +++ b/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml @@ -11,7 +11,8 @@ android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection" android:hardwareAccelerated="true" - android:windowSoftInputMode="adjustResize"> + android:windowSoftInputMode="adjustResize" + android:exported="true"> @@ -21,8 +22,7 @@ android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection" android:hardwareAccelerated="true" - android:windowSoftInputMode="adjustResize" - android:exported="true"> + android:windowSoftInputMode="adjustResize"> From 14ad8b1afefa78a4bbca97b4b6197b71149deded Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Tue, 8 Oct 2019 16:08:26 -0700 Subject: [PATCH 05/18] Update MethodCallHandlerImpl.java --- .../flutter/plugins/quickactions/MethodCallHandlerImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java index 92ac0479f18e..f41e5447bd4c 100644 --- a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java +++ b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java @@ -1,3 +1,7 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. // Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. // found in the LICENSE file. + package io.flutter.plugins.quickactions; import android.annotation.TargetApi; From 46a0510ee0e2cd9ff363d9103fdc3108e692c5c4 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Tue, 8 Oct 2019 16:08:45 -0700 Subject: [PATCH 06/18] Update MainActivity.java --- .../io/flutter/plugins/quickactionsexample/MainActivity.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivity.java b/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivity.java index 0640dc5b6c29..bafa996331e9 100644 --- a/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivity.java +++ b/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivity.java @@ -1,3 +1,7 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. // Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. // found in the LICENSE file. + package io.flutter.plugins.quickactionsexample; import io.flutter.embedding.android.FlutterActivity; From c548b913a139d1c610addf4c564ac8134d5a0101 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Tue, 8 Oct 2019 16:09:15 -0700 Subject: [PATCH 07/18] Update MethodCallHandlerImpl.java --- .../flutter/plugins/quickactions/MethodCallHandlerImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java index f41e5447bd4c..bfe4df869e80 100644 --- a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java +++ b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java @@ -1,6 +1,6 @@ -// Copyright 2019 The Chromium Authors. All rights reserved. // Copyright 2019 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. // found in the LICENSE file. +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. package io.flutter.plugins.quickactions; From 33a23cec1eb3c6c104776079da4ab6b63fa50b82 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Tue, 8 Oct 2019 16:09:38 -0700 Subject: [PATCH 08/18] Update MainActivity.java --- .../flutter/plugins/quickactionsexample/MainActivity.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivity.java b/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivity.java index bafa996331e9..4872db3e83a3 100644 --- a/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivity.java +++ b/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivity.java @@ -1,6 +1,6 @@ -// Copyright 2019 The Chromium Authors. All rights reserved. // Copyright 2019 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. // found in the LICENSE file. +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. package io.flutter.plugins.quickactionsexample; From 9a4ca1a0ece78eb87d1f3c55f78f752dd19dfc34 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Fri, 11 Oct 2019 14:03:14 -0700 Subject: [PATCH 09/18] fix gradle --- packages/quick_actions/android/build.gradle | 24 +++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/packages/quick_actions/android/build.gradle b/packages/quick_actions/android/build.gradle index 09576acb660b..883b027de818 100644 --- a/packages/quick_actions/android/build.gradle +++ b/packages/quick_actions/android/build.gradle @@ -45,3 +45,27 @@ android { disable 'InvalidPackage' } } + +afterEvaluate { + def containsEmbeddingDependencies = false + for (def configuration : configurations.all) { + for (def dependency : configuration.dependencies) { + if (dependency.group == 'io.flutter' && + dependency.name.startsWith('flutter_embedding') && + dependency.isTransitive()) + { + containsEmbeddingDependencies = true + break + } + } + } + if (!containsEmbeddingDependencies) { + android { + dependencies { + def lifecycle_version = "2.1.0" + api "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" + api "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" + } + } + } +} From 3a29150ce2c3a20553c7aec54473b12c18d4ec55 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Fri, 11 Oct 2019 14:15:53 -0700 Subject: [PATCH 10/18] Update packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java Co-Authored-By: Maurice Parrish --- .../io/flutter/plugins/quickactions/QuickActionsPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java index c08305db41ef..b3d3b6489bdd 100644 --- a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java +++ b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java @@ -28,7 +28,7 @@ public class QuickActionsPlugin implements FlutterPlugin, ActivityAware { *

Must be called when the application is created. */ public static void registerWith(Registrar registrar) { - QuickActionsPlugin plugin = new QuickActionsPlugin(); + final QuickActionsPlugin plugin = new QuickActionsPlugin(); plugin.setupChannel(registrar.messenger(), registrar.context(), registrar.activity()); } From 985e2abd5bc2678148a4047b974581da477a5258 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Mon, 14 Oct 2019 09:25:16 -0700 Subject: [PATCH 11/18] review fixes --- .../plugins/quickactions/QuickActionsPlugin.java | 13 +++++++++---- .../android/app/src/main/AndroidManifest.xml | 1 - 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java index b3d3b6489bdd..0e751d3f372b 100644 --- a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java +++ b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java @@ -19,8 +19,8 @@ public class QuickActionsPlugin implements FlutterPlugin, ActivityAware { private static final String CHANNEL_ID = "plugins.flutter.io/quick_actions"; - MethodChannel channel; - MethodCallHandlerImpl handler; + private MethodChannel channel; + private MethodCallHandlerImpl handler; /** * Plugin registration. @@ -40,8 +40,7 @@ public void onAttachedToEngine(FlutterPluginBinding binding) { @Override public void onDetachedFromEngine(FlutterPluginBinding binding) { - channel.setMethodCallHandler(null); - handler = null; + teardownChannel(); } @Override @@ -70,4 +69,10 @@ private void setupChannel( handler = new MethodCallHandlerImpl(context, activity); channel.setMethodCallHandler(handler); } + + private void teardownChannel() { + channel.setMethodCallHandler(null); + channel = null; + handler = null; + } } diff --git a/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml b/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml index 9da1b790f92a..6c70f1b650cd 100644 --- a/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml +++ b/packages/quick_actions/example/android/app/src/main/AndroidManifest.xml @@ -18,7 +18,6 @@ android:value="true"/> Date: Tue, 15 Oct 2019 16:11:01 -0700 Subject: [PATCH 12/18] Update MainActivity.java --- .../io/flutter/plugins/quickactionsexample/MainActivity.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivity.java b/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivity.java index 4872db3e83a3..ce128b60648e 100644 --- a/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivity.java +++ b/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivity.java @@ -10,6 +10,8 @@ public class MainActivity extends FlutterActivity { + // TODO(cyanglaz): Remove this once v2 of GeneratedPluginRegistrant rolls to stable. + // https://github.com/flutter/flutter/issues/42694 @Override public void configureFlutterEngine(FlutterEngine flutterEngine) { super.configureFlutterEngine(flutterEngine); From 7b7a16e68a48d771fe81e503ea3fd27a4192d94f Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Mon, 21 Oct 2019 17:00:20 -0700 Subject: [PATCH 13/18] init tests --- packages/quick_actions/example/pubspec.yaml | 9 +++++++++ .../test_driver/quick_actions_e2e.dart | 20 +++++++++++++++++++ .../test_driver/quick_actions_e2e_test.dart | 15 ++++++++++++++ packages/quick_actions/pubspec.yaml | 3 ++- 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 packages/quick_actions/example/test_driver/quick_actions_e2e.dart create mode 100644 packages/quick_actions/example/test_driver/quick_actions_e2e_test.dart diff --git a/packages/quick_actions/example/pubspec.yaml b/packages/quick_actions/example/pubspec.yaml index b5fe2e1a8545..6ecf27e4e415 100644 --- a/packages/quick_actions/example/pubspec.yaml +++ b/packages/quick_actions/example/pubspec.yaml @@ -7,5 +7,14 @@ dependencies: quick_actions: path: ../ +dev_dependencies: + flutter_driver: + sdk: flutter + e2e: ^0.2.0 + flutter: uses-material-design: true + +environment: + sdk: ">=2.0.0-dev.28.0 <3.0.0" + flutter: ">=1.9.1+hotfix.2 <2.0.0" \ No newline at end of file diff --git a/packages/quick_actions/example/test_driver/quick_actions_e2e.dart b/packages/quick_actions/example/test_driver/quick_actions_e2e.dart new file mode 100644 index 000000000000..7addb677046e --- /dev/null +++ b/packages/quick_actions/example/test_driver/quick_actions_e2e.dart @@ -0,0 +1,20 @@ + +// Copyright 2019, the Chromium project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:async'; +import 'dart:io'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:e2e/e2e.dart'; +import 'package:quick_actions/quick_actions.dart'; + +void main() { + E2EWidgetsFlutterBinding.ensureInitialized(); + + testWidgets('Can initialize', (WidgetTester tester) async { + final QuickActions quickActions = QuickActions(); + Completer completer = Completer<>(); + quickActions.initialize(null); + }); +} \ No newline at end of file diff --git a/packages/quick_actions/example/test_driver/quick_actions_e2e_test.dart b/packages/quick_actions/example/test_driver/quick_actions_e2e_test.dart new file mode 100644 index 000000000000..642dc8bd6ab2 --- /dev/null +++ b/packages/quick_actions/example/test_driver/quick_actions_e2e_test.dart @@ -0,0 +1,15 @@ +// Copyright 2019, the Chromium project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:async'; +import 'dart:io'; +import 'package:flutter_driver/flutter_driver.dart'; + +Future main() async { + final FlutterDriver driver = await FlutterDriver.connect(); + final String result = + await driver.requestData(null, timeout: const Duration(minutes: 1)); + driver.close(); + exit(result == 'pass' ? 0 : 1); +} \ No newline at end of file diff --git a/packages/quick_actions/pubspec.yaml b/packages/quick_actions/pubspec.yaml index bc818e7c80ac..027d6cdf8758 100644 --- a/packages/quick_actions/pubspec.yaml +++ b/packages/quick_actions/pubspec.yaml @@ -21,7 +21,8 @@ dev_dependencies: mockito: ^3.0.0 flutter_test: sdk: flutter + e2e: ^0.2.0 environment: sdk: ">=2.0.0-dev.28.0 <3.0.0" - flutter: ">=1.5.0 <2.0.0" + flutter: ">=1.6.7 <2.0.0" From e44e532c9aae686b5edc0af7f881530548ad966d Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Wed, 30 Oct 2019 14:38:41 -0700 Subject: [PATCH 14/18] merge master and versioning --- packages/quick_actions/CHANGELOG.md | 9 ++++++++- packages/quick_actions/android/build.gradle | 7 ++++--- .../quickactions/MethodCallHandlerImpl.java | 4 +--- .../quickactions/QuickActionsPlugin.java | 4 +--- .../EmbeddingV1ActivityTest.java | 17 +++++++++++++++++ .../quickactionsexample/MainActivityTest.java | 15 +++++++++++++++ .../example/test_driver/quick_actions_e2e.dart | 12 ++++++++---- packages/quick_actions/pubspec.yaml | 2 +- 8 files changed, 55 insertions(+), 15 deletions(-) create mode 100644 packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/EmbeddingV1ActivityTest.java create mode 100644 packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivityTest.java diff --git a/packages/quick_actions/CHANGELOG.md b/packages/quick_actions/CHANGELOG.md index d1e6d8db07f3..59d71ab931dc 100644 --- a/packages/quick_actions/CHANGELOG.md +++ b/packages/quick_actions/CHANGELOG.md @@ -1,4 +1,11 @@ +## 0.3.3 + +* Support Android V2 embedding. +* Add e2e tests. +* Migrate to using the new e2e test binding. + ## 0.3.2+2 + * Fix bug that would make the shortcut not open on Android. * Report shortcut used on Android. * Improves example. @@ -9,7 +16,7 @@ ## 0.3.2 -* Fixed the quick actions launch on Android when the app is killed. +* Fixed the quick actions launch on Android when the app is killed. ## 0.3.1 diff --git a/packages/quick_actions/android/build.gradle b/packages/quick_actions/android/build.gradle index 883b027de818..35877982d6de 100644 --- a/packages/quick_actions/android/build.gradle +++ b/packages/quick_actions/android/build.gradle @@ -62,9 +62,10 @@ afterEvaluate { if (!containsEmbeddingDependencies) { android { dependencies { - def lifecycle_version = "2.1.0" - api "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" - api "androidx.lifecycle:lifecycle-runtime:$lifecycle_version" + def lifecycle_version = "1.1.1" + compileOnly "android.arch.lifecycle:runtime:$lifecycle_version" + compileOnly "android.arch.lifecycle:common:$lifecycle_version" + compileOnly "android.arch.lifecycle:common-java8:$lifecycle_version" } } } diff --git a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java index bfe4df869e80..dcf2390570bd 100644 --- a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java +++ b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java @@ -13,8 +13,6 @@ import android.content.res.Resources; import android.graphics.drawable.Icon; import android.os.Build; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; import java.util.ArrayList; @@ -29,7 +27,7 @@ class MethodCallHandlerImpl implements MethodChannel.MethodCallHandler { private final Context context; private Activity activity; - MethodCallHandlerImpl(@NonNull Context context, @Nullable Activity activity) { + MethodCallHandlerImpl(Context context, Activity activity) { this.context = context; this.activity = activity; } diff --git a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java index 0e751d3f372b..db014a70d537 100644 --- a/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java +++ b/packages/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java @@ -6,8 +6,6 @@ import android.app.Activity; import android.content.Context; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import io.flutter.embedding.engine.plugins.FlutterPlugin; import io.flutter.embedding.engine.plugins.activity.ActivityAware; import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding; @@ -64,7 +62,7 @@ public void onDetachedFromActivityForConfigChanges() { } private void setupChannel( - @NonNull BinaryMessenger messenger, @NonNull Context context, @Nullable Activity activity) { + BinaryMessenger messenger, Context context, Activity activity) { channel = new MethodChannel(messenger, CHANNEL_ID); handler = new MethodCallHandlerImpl(context, activity); channel.setMethodCallHandler(handler); diff --git a/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/EmbeddingV1ActivityTest.java b/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/EmbeddingV1ActivityTest.java new file mode 100644 index 000000000000..b3e2a08c44b4 --- /dev/null +++ b/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/EmbeddingV1ActivityTest.java @@ -0,0 +1,17 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package io.flutter.plugins.quickactionsexample; + +import androidx.test.rule.ActivityTestRule; +import dev.flutter.plugins.e2e.FlutterRunner; +import org.junit.Rule; +import org.junit.runner.RunWith; + +@RunWith(FlutterRunner.class) +public class EmbeddingV1ActivityTest { + @Rule + public ActivityTestRule rule = + new ActivityTestRule<>(EmbeddingV1Activity.class); +} diff --git a/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivityTest.java b/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivityTest.java new file mode 100644 index 000000000000..4d3e1822d616 --- /dev/null +++ b/packages/quick_actions/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/MainActivityTest.java @@ -0,0 +1,15 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package io.flutter.plugins.quickactionsexample; + +import androidx.test.rule.ActivityTestRule; +import dev.flutter.plugins.e2e.FlutterRunner; +import org.junit.Rule; +import org.junit.runner.RunWith; + +@RunWith(FlutterRunner.class) +public class MainActivityTest { + @Rule public ActivityTestRule rule = new ActivityTestRule<>(MainActivity.class); +} diff --git a/packages/quick_actions/example/test_driver/quick_actions_e2e.dart b/packages/quick_actions/example/test_driver/quick_actions_e2e.dart index 7addb677046e..a7abe48a77e0 100644 --- a/packages/quick_actions/example/test_driver/quick_actions_e2e.dart +++ b/packages/quick_actions/example/test_driver/quick_actions_e2e.dart @@ -3,8 +3,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -import 'dart:async'; -import 'dart:io'; import 'package:flutter_test/flutter_test.dart'; import 'package:e2e/e2e.dart'; import 'package:quick_actions/quick_actions.dart'; @@ -12,9 +10,15 @@ import 'package:quick_actions/quick_actions.dart'; void main() { E2EWidgetsFlutterBinding.ensureInitialized(); - testWidgets('Can initialize', (WidgetTester tester) async { + testWidgets('Can set shortcuts', (WidgetTester tester) async { final QuickActions quickActions = QuickActions(); - Completer completer = Completer<>(); quickActions.initialize(null); + + final ShortcutItem shortCutItem = ShortcutItem( + type: 'action_one', + localizedTitle: 'Action one', + icon: 'AppIcon', + ); + expect(quickActions.setShortcutItems([shortCutItem]), completes); }); } \ No newline at end of file diff --git a/packages/quick_actions/pubspec.yaml b/packages/quick_actions/pubspec.yaml index 027d6cdf8758..c11596b82f47 100644 --- a/packages/quick_actions/pubspec.yaml +++ b/packages/quick_actions/pubspec.yaml @@ -3,7 +3,7 @@ description: Flutter plugin for creating shortcuts on home screen, also known as Quick Actions on iOS and App Shortcuts on Android. author: Flutter Team homepage: https://github.com/flutter/plugins/tree/master/packages/quick_actions -version: 0.3.2+2 +version: 0.3.3 flutter: plugin: From 25453dc5cf049fc11e41638d85d723ff8e464172 Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Wed, 30 Oct 2019 14:44:36 -0700 Subject: [PATCH 15/18] fix conflicts --- packages/quick_actions/example/pubspec.yaml | 2 +- packages/quick_actions/pubspec.yaml | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/quick_actions/example/pubspec.yaml b/packages/quick_actions/example/pubspec.yaml index 6ecf27e4e415..6cbacb5b84d2 100644 --- a/packages/quick_actions/example/pubspec.yaml +++ b/packages/quick_actions/example/pubspec.yaml @@ -17,4 +17,4 @@ flutter: environment: sdk: ">=2.0.0-dev.28.0 <3.0.0" - flutter: ">=1.9.1+hotfix.2 <2.0.0" \ No newline at end of file + flutter: ">=1.9.1+hotfix.2 <2.0.0" diff --git a/packages/quick_actions/pubspec.yaml b/packages/quick_actions/pubspec.yaml index b1f4ffefff74..c11596b82f47 100644 --- a/packages/quick_actions/pubspec.yaml +++ b/packages/quick_actions/pubspec.yaml @@ -3,11 +3,7 @@ description: Flutter plugin for creating shortcuts on home screen, also known as Quick Actions on iOS and App Shortcuts on Android. author: Flutter Team homepage: https://github.com/flutter/plugins/tree/master/packages/quick_actions -<<<<<<< HEAD version: 0.3.3 -======= -version: 0.3.2+4 ->>>>>>> master flutter: plugin: From ec1da8a21b75ab2ace0c8b26ce2e0a0c47cb49bb Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Thu, 31 Oct 2019 10:55:01 -0700 Subject: [PATCH 16/18] remove author field --- packages/quick_actions/pubspec.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/quick_actions/pubspec.yaml b/packages/quick_actions/pubspec.yaml index c11596b82f47..cbc8c1785c4b 100644 --- a/packages/quick_actions/pubspec.yaml +++ b/packages/quick_actions/pubspec.yaml @@ -1,7 +1,6 @@ name: quick_actions description: Flutter plugin for creating shortcuts on home screen, also known as Quick Actions on iOS and App Shortcuts on Android. -author: Flutter Team homepage: https://github.com/flutter/plugins/tree/master/packages/quick_actions version: 0.3.3 From a3ffc2304ba66d0272acc78e837626c52a0cd6da Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Thu, 31 Oct 2019 11:39:17 -0700 Subject: [PATCH 17/18] move back author field --- packages/quick_actions/pubspec.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/quick_actions/pubspec.yaml b/packages/quick_actions/pubspec.yaml index cbc8c1785c4b..c11596b82f47 100644 --- a/packages/quick_actions/pubspec.yaml +++ b/packages/quick_actions/pubspec.yaml @@ -1,6 +1,7 @@ name: quick_actions description: Flutter plugin for creating shortcuts on home screen, also known as Quick Actions on iOS and App Shortcuts on Android. +author: Flutter Team homepage: https://github.com/flutter/plugins/tree/master/packages/quick_actions version: 0.3.3 From 92793dbdcfdeeebb0ea9ae9ffc5f71637067e84b Mon Sep 17 00:00:00 2001 From: Chris Yang Date: Thu, 31 Oct 2019 15:39:42 -0700 Subject: [PATCH 18/18] fix CI warning --- .../quick_actions/example/test_driver/quick_actions_e2e.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/quick_actions/example/test_driver/quick_actions_e2e.dart b/packages/quick_actions/example/test_driver/quick_actions_e2e.dart index d8c747fe4a1b..41d35b874640 100644 --- a/packages/quick_actions/example/test_driver/quick_actions_e2e.dart +++ b/packages/quick_actions/example/test_driver/quick_actions_e2e.dart @@ -13,7 +13,7 @@ void main() { final QuickActions quickActions = QuickActions(); quickActions.initialize(null); - final ShortcutItem shortCutItem = ShortcutItem( + const ShortcutItem shortCutItem = ShortcutItem( type: 'action_one', localizedTitle: 'Action one', icon: 'AppIcon',