[android_intent] Bump to Flutter stable, remove deprecation warnings (#2586)
* Bumps Flutter & Dart dependencies to stable
* Uses spread operator to concisely build arguments
* Refactors and cleans up the plugin a bit
diff --git a/packages/android_intent/CHANGELOG.md b/packages/android_intent/CHANGELOG.md
index 47f1917..6160ba5 100644
--- a/packages/android_intent/CHANGELOG.md
+++ b/packages/android_intent/CHANGELOG.md
@@ -1,3 +1,11 @@
+## 0.3.6+1
+
+* Bump the minimum Flutter version to 1.12.13+hotfix.5.
+* Bump the minimum Dart version to 2.3.0.
+* Uses Darts spread operator to build plugin arguments internally.
+* Remove deprecated API usage warning in AndroidIntentPlugin.java.
+* Migrates the Android example to V2 embedding.
+
## 0.3.6
* Marks the `action` parameter as optional
diff --git a/packages/android_intent/android/build.gradle b/packages/android_intent/android/build.gradle
index 008b49f..d261dac 100644
--- a/packages/android_intent/android/build.gradle
+++ b/packages/android_intent/android/build.gradle
@@ -43,29 +43,3 @@
testImplementation 'androidx.test:core:1.0.0'
testImplementation 'org.robolectric:robolectric:4.3'
}
-
-// TODO(mklim): Remove this hack once androidx.lifecycle is included on stable. https://github.com/flutter/flutter/issues/42348
-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 = "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/android_intent/android/src/main/java/io/flutter/plugins/androidintent/AndroidIntentPlugin.java b/packages/android_intent/android/src/main/java/io/flutter/plugins/androidintent/AndroidIntentPlugin.java
index 10c8079..2f35dfc 100644
--- a/packages/android_intent/android/src/main/java/io/flutter/plugins/androidintent/AndroidIntentPlugin.java
+++ b/packages/android_intent/android/src/main/java/io/flutter/plugins/androidintent/AndroidIntentPlugin.java
@@ -42,7 +42,7 @@
public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
sender.setApplicationContext(binding.getApplicationContext());
sender.setActivity(null);
- impl.startListening(binding.getFlutterEngine().getDartExecutor());
+ impl.startListening(binding.getBinaryMessenger());
}
@Override
diff --git a/packages/android_intent/example/android/app/src/main/AndroidManifest.xml b/packages/android_intent/example/android/app/src/main/AndroidManifest.xml
index 7d6fcd4..761c35f 100644
--- a/packages/android_intent/example/android/app/src/main/AndroidManifest.xml
+++ b/packages/android_intent/example/android/app/src/main/AndroidManifest.xml
@@ -11,25 +11,27 @@
android:label="android_intent_example"
android:name="io.flutter.app.FlutterApplication">
<activity
- android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection"
- android:exported="true"
- android:hardwareAccelerated="true"
- android:launchMode="singleTop"
+ android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale"
android:name=".EmbeddingV1Activity"
android:theme="@android:style/Theme.Black.NoTitleBar"
- android:windowSoftInputMode="adjustResize"/>
- <activity
- android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection"
android:hardwareAccelerated="true"
- android:launchMode="singleTop"
- android:name=".MainActivity"
- android:theme="@android:style/Theme.Black.NoTitleBar"
android:windowSoftInputMode="adjustResize">
+ </activity>
+
+ <activity android:name="io.flutter.embedding.android.FlutterActivity"
+ android:theme="@android:style/Theme.Black.NoTitleBar"
+ android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale"
+ android:hardwareAccelerated="true"
+ android:windowSoftInputMode="adjustResize">
+ <meta-data
+ android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
+ android:value="true" />
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
+ <meta-data android:name="flutterEmbedding" android:value="2"/>
</application>
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
diff --git a/packages/android_intent/example/android/app/src/main/java/io/flutter/plugins/androidintentexample/EmbeddingV1Activity.java b/packages/android_intent/example/android/app/src/main/java/io/flutter/plugins/androidintentexample/EmbeddingV1Activity.java
index 95dc41a..1bbe89a 100644
--- a/packages/android_intent/example/android/app/src/main/java/io/flutter/plugins/androidintentexample/EmbeddingV1Activity.java
+++ b/packages/android_intent/example/android/app/src/main/java/io/flutter/plugins/androidintentexample/EmbeddingV1Activity.java
@@ -6,12 +6,13 @@
import android.os.Bundle;
import io.flutter.app.FlutterActivity;
-import io.flutter.plugins.GeneratedPluginRegistrant;
+import io.flutter.plugins.androidintent.AndroidIntentPlugin;
public class EmbeddingV1Activity extends FlutterActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- GeneratedPluginRegistrant.registerWith(this);
+ AndroidIntentPlugin.registerWith(
+ registrarFor("io.flutter.plugins.androidintent.AndroidIntentPlugin"));
}
}
diff --git a/packages/android_intent/example/android/app/src/main/java/io/flutter/plugins/androidintentexample/MainActivity.java b/packages/android_intent/example/android/app/src/main/java/io/flutter/plugins/androidintentexample/MainActivity.java
deleted file mode 100644
index 56e0bab..0000000
--- a/packages/android_intent/example/android/app/src/main/java/io/flutter/plugins/androidintentexample/MainActivity.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package io.flutter.plugins.androidintentexample;
-
-import io.flutter.embedding.android.FlutterActivity;
-import io.flutter.embedding.engine.FlutterEngine;
-import io.flutter.plugins.androidintent.AndroidIntentPlugin;
-
-public class MainActivity extends FlutterActivity {
- @Override
- public void configureFlutterEngine(FlutterEngine flutterEngine) {
- flutterEngine.getPlugins().add(new AndroidIntentPlugin());
- }
-}
diff --git a/packages/android_intent/example/pubspec.yaml b/packages/android_intent/example/pubspec.yaml
index 4418e9f..22ff833 100644
--- a/packages/android_intent/example/pubspec.yaml
+++ b/packages/android_intent/example/pubspec.yaml
@@ -16,6 +16,3 @@
# The following section is specific to Flutter.
flutter:
uses-material-design: true
-
-environment:
- flutter: ">=1.9.1+hotfix.2 <2.0.0"
\ No newline at end of file
diff --git a/packages/android_intent/lib/android_intent.dart b/packages/android_intent/lib/android_intent.dart
index 26e270a..ff95299 100644
--- a/packages/android_intent/lib/android_intent.dart
+++ b/packages/android_intent/lib/android_intent.dart
@@ -134,31 +134,23 @@
if (!_platform.isAndroid) {
return;
}
- final Map<String, dynamic> args = <String, dynamic>{};
- if (action != null) {
- args['action'] = action;
- }
- if (flags != null) {
- args['flags'] = convertFlags(flags);
- }
- if (category != null) {
- args['category'] = category;
- }
- if (data != null) {
- args['data'] = data;
- }
- if (arguments != null) {
- args['arguments'] = arguments;
- }
- if (package != null) {
- args['package'] = package;
- if (componentName != null) {
- args['componentName'] = componentName;
- }
- }
- if (type != null) {
- args['type'] = type;
- }
- await _channel.invokeMethod<void>('launch', args);
+
+ await _channel.invokeMethod<void>('launch', _buildArguments());
+ }
+
+ /// Constructs the map of arguments which is passed to the plugin.
+ Map<String, dynamic> _buildArguments() {
+ return {
+ if (action != null) 'action': action,
+ if (flags != null) 'flags': convertFlags(flags),
+ if (category != null) 'category': category,
+ if (data != null) 'data': data,
+ if (arguments != null) 'arguments': arguments,
+ if (package != null) ...{
+ 'package': package,
+ if (componentName != null) 'componentName': componentName,
+ },
+ if (type != null) 'type': type,
+ };
}
}
diff --git a/packages/android_intent/pubspec.yaml b/packages/android_intent/pubspec.yaml
index 2faf45e..82f6e18 100644
--- a/packages/android_intent/pubspec.yaml
+++ b/packages/android_intent/pubspec.yaml
@@ -1,7 +1,7 @@
name: android_intent
description: Flutter plugin for launching Android Intents. Not supported on iOS.
homepage: https://github.com/flutter/plugins/tree/master/packages/android_intent
-version: 0.3.6
+version: 0.3.6+1
flutter:
plugin:
@@ -23,5 +23,5 @@
pedantic: ^1.8.0
environment:
- sdk: ">=2.0.0-dev.28.0 <3.0.0"
- flutter: ">=1.10.0 <2.0.0"
+ sdk: ">=2.3.0 <3.0.0"
+ flutter: ">=1.12.13+hotfix.5 <2.0.0"
\ No newline at end of file