diff --git a/packages/quick_actions/quick_actions/pubspec.yaml b/packages/quick_actions/quick_actions/pubspec.yaml
index 51cf642..b2a9f74 100644
--- a/packages/quick_actions/quick_actions/pubspec.yaml
+++ b/packages/quick_actions/quick_actions/pubspec.yaml
@@ -17,8 +17,7 @@
   plugin:
     platforms:
       android:
-        package: io.flutter.plugins.quickactions
-        pluginClass: QuickActionsPlugin
+        default_package: quick_actions_android
       ios:
         default_package: quick_actions_ios
 
@@ -26,6 +25,8 @@
   flutter:
     sdk: flutter
   # Temporary path dependencies to allow moving Android and iOS implementations.
+  quick_actions_android:
+    path: ../quick_actions_android
   quick_actions_ios:
     path: ../quick_actions_ios
   quick_actions_platform_interface: ^1.0.0
diff --git a/packages/quick_actions/quick_actions_android/AUTHORS b/packages/quick_actions/quick_actions_android/AUTHORS
new file mode 100644
index 0000000..5f17b78
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/AUTHORS
@@ -0,0 +1,68 @@
+# Below is a list of people and organizations that have contributed
+# to the Flutter project. Names should be added to the list like so:
+#
+#   Name/Organization <email address>
+
+Google Inc.
+The Chromium Authors
+German Saprykin <saprykin.h@gmail.com>
+Benjamin Sauer <sauer.benjamin@gmail.com>
+larsenthomasj@gmail.com
+Ali Bitek <alibitek@protonmail.ch>
+Pol Batlló <pol.batllo@gmail.com>
+Anatoly Pulyaevskiy
+Hayden Flinner <haydenflinner@gmail.com>
+Stefano Rodriguez <hlsroddy@gmail.com>
+Salvatore Giordano <salvatoregiordanoo@gmail.com>
+Brian Armstrong <brian@flutter.institute>
+Paul DeMarco <paulmdemarco@gmail.com>
+Fabricio Nogueira <feufeu@gmail.com>
+Simon Lightfoot <simon@devangels.london>
+Ashton Thomas <ashton@acrinta.com>
+Thomas Danner <thmsdnnr@gmail.com>
+Diego Velásquez <diego.velasquez.lopez@gmail.com>
+Hajime Nakamura <nkmrhj@gmail.com>
+Tuyển Vũ Xuân <netsoft1985@gmail.com>
+Miguel Ruivo <miguel@miguelruivo.com>
+Sarthak Verma <sarthak@artiosys.com>
+Mike Diarmid <mike@invertase.io>
+Invertase <oss@invertase.io>
+Elliot Hesp <elliot@invertase.io>
+Vince Varga <vince.varga@smaho.com>
+Aawaz Gyawali <awazgyawali@gmail.com>
+EUI Limited <ian.evans3@admiralgroup.co.uk>
+Katarina Sheremet <katarina@sheremet.ch>
+Thomas Stockx <thomas@stockxit.com>
+Sarbagya Dhaubanjar <sarbagyastha@gmail.com>
+Ozkan Eksi <ozeksi@gmail.com>
+Rishab Nayak <rishab@bu.edu>
+ko2ic <ko2ic.dev@gmail.com>
+Jonathan Younger <jonathan@daikini.com>
+Jose Sanchez <josesm82@gmail.com>
+Debkanchan Samadder <debu.samadder@gmail.com>
+Audrius Karosevicius <audrius.karosevicius@gmail.com>
+Lukasz Piliszczuk <lukasz@intheloup.io>
+SoundReply Solutions GmbH <ch@soundreply.com>
+Rafal Wachol <rwachol@gmail.com>
+Pau Picas <pau.picas@gmail.com>
+Christian Weder <chrstian.weder@yapeal.ch>
+Alexandru Tuca <salexandru.tuca@outlook.com>
+Christian Weder <chrstian.weder@yapeal.ch>
+Rhodes Davis Jr. <rody.davis.jr@gmail.com>
+Luigi Agosti <luigi@tengio.com>
+Quentin Le Guennec <quentin@tengio.com>
+Koushik Ravikumar <koushik@tengio.com>
+Nissim Dsilva <nissim@tengio.com>
+Giancarlo Rocha <giancarloiff@gmail.com>
+Ryo Miyake <ryo@miyake.id>
+Théo Champion <contact.theochampion@gmail.com>
+Kazuki Yamaguchi <y.kazuki0614n@gmail.com>
+Eitan Schwartz <eshvartz@gmail.com>
+Chris Rutkowski <chrisrutkowski89@gmail.com>
+Juan Alvarez <juan.alvarez@resideo.com>
+Aleksandr Yurkovskiy <sanekyy@gmail.com>
+Anton Borries <mail@antonborri.es>
+Alex Li <google@alexv525.com>
+Rahul Raj <64.rahulraj@gmail.com>
+Daniel Roek <daniel.roek@gmail.com>
+Maurits van Beusekom <maurits@baseflow.com>
diff --git a/packages/quick_actions/quick_actions_android/CHANGELOG.md b/packages/quick_actions/quick_actions_android/CHANGELOG.md
new file mode 100644
index 0000000..98e8cf5
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/CHANGELOG.md
@@ -0,0 +1,3 @@
+## 0.6.0+9
+
+* Switches to a package-internal implementation of the platform interface.
\ No newline at end of file
diff --git a/packages/quick_actions/quick_actions_android/LICENSE b/packages/quick_actions/quick_actions_android/LICENSE
new file mode 100644
index 0000000..c6823b8
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/LICENSE
@@ -0,0 +1,25 @@
+Copyright 2013 The Flutter Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+    * Neither the name of Google Inc. nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/packages/quick_actions/quick_actions_android/README.md b/packages/quick_actions/quick_actions_android/README.md
new file mode 100644
index 0000000..caeb943
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/README.md
@@ -0,0 +1,17 @@
+# quick\_actions\_android
+
+The Android implementation of [`quick_actions`][1].
+
+## Usage
+
+This package is [endorsed][2], which means you can simply use `quick_actions`
+normally. This package will be automatically included in your app when you do.
+
+## Contributing
+
+If you would like to contribute to the plugin, check out our [contribution guide][3].
+
+[1]: https://pub.dev/packages/quick_actions
+[2]: https://flutter.dev/docs/development/packages-and-plugins/developing-packages#endorsed-federated-plugin
+[3]: https://github.com/flutter/plugins/blob/master/CONTRIBUTING.md
+
diff --git a/packages/quick_actions/quick_actions/android/build.gradle b/packages/quick_actions/quick_actions_android/android/build.gradle
similarity index 100%
rename from packages/quick_actions/quick_actions/android/build.gradle
rename to packages/quick_actions/quick_actions_android/android/build.gradle
diff --git a/packages/quick_actions/quick_actions/android/settings.gradle b/packages/quick_actions/quick_actions_android/android/settings.gradle
similarity index 100%
rename from packages/quick_actions/quick_actions/android/settings.gradle
rename to packages/quick_actions/quick_actions_android/android/settings.gradle
diff --git a/packages/quick_actions/quick_actions/android/src/main/AndroidManifest.xml b/packages/quick_actions/quick_actions_android/android/src/main/AndroidManifest.xml
similarity index 100%
rename from packages/quick_actions/quick_actions/android/src/main/AndroidManifest.xml
rename to packages/quick_actions/quick_actions_android/android/src/main/AndroidManifest.xml
diff --git a/packages/quick_actions/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java b/packages/quick_actions/quick_actions_android/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java
similarity index 99%
rename from packages/quick_actions/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java
rename to packages/quick_actions/quick_actions_android/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java
index 34563cb..6316e84 100644
--- a/packages/quick_actions/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java
+++ b/packages/quick_actions/quick_actions_android/android/src/main/java/io/flutter/plugins/quickactions/MethodCallHandlerImpl.java
@@ -27,7 +27,7 @@
 
 class MethodCallHandlerImpl implements MethodChannel.MethodCallHandler {
   protected static final String EXTRA_ACTION = "some unique action key";
-  private static final String CHANNEL_ID = "plugins.flutter.io/quick_actions";
+  private static final String CHANNEL_ID = "plugins.flutter.io/quick_actions_android";
 
   private final Context context;
   private Activity activity;
diff --git a/packages/quick_actions/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java b/packages/quick_actions/quick_actions_android/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java
similarity index 98%
rename from packages/quick_actions/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java
rename to packages/quick_actions/quick_actions_android/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java
index b2f80ad..99ce0f8 100644
--- a/packages/quick_actions/quick_actions/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java
+++ b/packages/quick_actions/quick_actions_android/android/src/main/java/io/flutter/plugins/quickactions/QuickActionsPlugin.java
@@ -17,7 +17,7 @@
 
 /** QuickActionsPlugin */
 public class QuickActionsPlugin implements FlutterPlugin, ActivityAware, NewIntentListener {
-  private static final String CHANNEL_ID = "plugins.flutter.io/quick_actions";
+  private static final String CHANNEL_ID = "plugins.flutter.io/quick_actions_android";
 
   private MethodChannel channel;
   private MethodCallHandlerImpl handler;
diff --git a/packages/quick_actions/quick_actions/android/src/test/java/io/flutter/plugins/quickactions/QuickActionsTest.java b/packages/quick_actions/quick_actions_android/android/src/test/java/io/flutter/plugins/quickactions/QuickActionsTest.java
similarity index 98%
rename from packages/quick_actions/quick_actions/android/src/test/java/io/flutter/plugins/quickactions/QuickActionsTest.java
rename to packages/quick_actions/quick_actions_android/android/src/test/java/io/flutter/plugins/quickactions/QuickActionsTest.java
index 208a119..d2e63b6 100644
--- a/packages/quick_actions/quick_actions/android/src/test/java/io/flutter/plugins/quickactions/QuickActionsTest.java
+++ b/packages/quick_actions/quick_actions_android/android/src/test/java/io/flutter/plugins/quickactions/QuickActionsTest.java
@@ -43,7 +43,7 @@
         @NonNull String channel,
         @Nullable ByteBuffer message,
         @Nullable final BinaryReply callback) {
-      if (channel.equals("plugins.flutter.io/quick_actions")) {
+      if (channel.equals("plugins.flutter.io/quick_actions_android")) {
         lastMethodCall =
             StandardMethodCodec.INSTANCE.decodeMethodCall((ByteBuffer) message.position(0));
       }
diff --git a/packages/quick_actions/quick_actions_android/example/README.md b/packages/quick_actions/quick_actions_android/example/README.md
new file mode 100644
index 0000000..d1b7289
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/README.md
@@ -0,0 +1,8 @@
+# quick_actions_example
+
+Demonstrates how to use the quick_actions plugin.
+
+## Getting Started
+
+For help getting started with Flutter, view our online
+[documentation](https://flutter.dev/).
diff --git a/packages/quick_actions/quick_actions_android/example/android/app/build.gradle b/packages/quick_actions/quick_actions_android/example/android/app/build.gradle
new file mode 100644
index 0000000..54f2e59
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/android/app/build.gradle
@@ -0,0 +1,59 @@
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+    localPropertiesFile.withReader('UTF-8') { reader ->
+        localProperties.load(reader)
+    }
+}
+
+def flutterRoot = localProperties.getProperty('flutter.sdk')
+if (flutterRoot == null) {
+    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
+}
+
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+    flutterVersionCode = '1'
+}
+
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+    flutterVersionName = '1.0'
+}
+
+apply plugin: 'com.android.application'
+apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
+
+android {
+    compileSdkVersion 31
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
+
+    defaultConfig {
+        applicationId "io.flutter.plugins.quickactionsexample"
+        minSdkVersion 21
+        targetSdkVersion 28
+        versionCode flutterVersionCode.toInteger()
+        versionName flutterVersionName
+        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+    }
+
+    buildTypes {
+        release {
+            signingConfig signingConfigs.debug
+        }
+    }
+}
+
+flutter {
+    source '../..'
+}
+
+dependencies {
+    testImplementation 'junit:junit:4.12'
+    androidTestImplementation 'androidx.test:runner:1.2.0'
+    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+    api 'androidx.test:core:1.2.0'
+}
diff --git a/packages/quick_actions/quick_actions_android/example/android/app/gradle/wrapper/gradle-wrapper.properties b/packages/quick_actions/quick_actions_android/example/android/app/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..9a4163a
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/android/app/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/packages/quick_actions/quick_actions_android/example/android/app/src/androidTest/java/io/flutter/plugins/DartIntegrationTest.java b/packages/quick_actions/quick_actions_android/example/android/app/src/androidTest/java/io/flutter/plugins/DartIntegrationTest.java
new file mode 100644
index 0000000..0f4298d
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/android/app/src/androidTest/java/io/flutter/plugins/DartIntegrationTest.java
@@ -0,0 +1,14 @@
+// Copyright 2013 The Flutter 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;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface DartIntegrationTest {}
diff --git a/packages/quick_actions/quick_actions_android/example/android/app/src/androidTest/java/io/flutter/plugins/quickactionsexample/FlutterActivityTest.java b/packages/quick_actions/quick_actions_android/example/android/app/src/androidTest/java/io/flutter/plugins/quickactionsexample/FlutterActivityTest.java
new file mode 100644
index 0000000..e96548d
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/android/app/src/androidTest/java/io/flutter/plugins/quickactionsexample/FlutterActivityTest.java
@@ -0,0 +1,19 @@
+// Copyright 2013 The Flutter 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.integration_test.FlutterTestRunner;
+import io.flutter.embedding.android.FlutterActivity;
+import io.flutter.plugins.DartIntegrationTest;
+import org.junit.Rule;
+import org.junit.runner.RunWith;
+
+@DartIntegrationTest
+@RunWith(FlutterTestRunner.class)
+public class FlutterActivityTest {
+  @Rule
+  public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
+}
diff --git a/packages/quick_actions/quick_actions/example/android/app/src/androidTest/java/io/flutter/plugins/quickactionsexample/QuickActionsTest.java b/packages/quick_actions/quick_actions_android/example/android/app/src/androidTest/java/io/flutter/plugins/quickactionsexample/QuickActionsTest.java
similarity index 100%
rename from packages/quick_actions/quick_actions/example/android/app/src/androidTest/java/io/flutter/plugins/quickactionsexample/QuickActionsTest.java
rename to packages/quick_actions/quick_actions_android/example/android/app/src/androidTest/java/io/flutter/plugins/quickactionsexample/QuickActionsTest.java
diff --git a/packages/quick_actions/quick_actions_android/example/android/app/src/debug/AndroidManifest.xml b/packages/quick_actions/quick_actions_android/example/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 0000000..bee689d
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,17 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="io.flutter.plugins.quickactionsexample">
+    <!-- Flutter needs internet permission to communicate with the running application
+         to allow setting breakpoints, to provide hot reload, etc.
+    -->
+    <uses-permission android:name="android.permission.INTERNET"/>
+    <application android:usesCleartextTraffic="true">
+        <activity
+            android:name=".QuickActionsTestActivity"
+            android:launchMode="singleTop"
+            android:theme="@style/LaunchTheme"
+            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
+            android:hardwareAccelerated="true"
+            android:windowSoftInputMode="adjustResize">
+        </activity>
+    </application>
+</manifest>
diff --git a/packages/quick_actions/quick_actions_android/example/android/app/src/main/AndroidManifest.xml b/packages/quick_actions/quick_actions_android/example/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..4f384b7
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,22 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="io.flutter.plugins.quickactionsexample">
+
+  <uses-permission android:name="android.permission.INTERNET"/>
+
+  <application android:label="quick_actions_example" android:icon="@mipmap/ic_launcher">
+      <meta-data
+          android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
+          android:value="true"/>
+      <activity android:name="io.flutter.embedding.android.FlutterActivity"
+          android:theme="@style/LaunchTheme"
+          android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection"
+          android:hardwareAccelerated="true"
+          android:windowSoftInputMode="adjustResize">
+          <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>
+</manifest>
diff --git a/packages/quick_actions/quick_actions_android/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/QuickActionsTestActivity.java b/packages/quick_actions/quick_actions_android/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/QuickActionsTestActivity.java
new file mode 100644
index 0000000..4ff3a27
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/android/app/src/main/java/io/flutter/plugins/quickactionsexample/QuickActionsTestActivity.java
@@ -0,0 +1,20 @@
+// Copyright 2013 The Flutter 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.annotation.NonNull;
+import io.flutter.embedding.android.FlutterActivity;
+import io.flutter.embedding.engine.FlutterEngine;
+
+// Makes the FlutterEngine accessible for testing.
+public class QuickActionsTestActivity extends FlutterActivity {
+  public FlutterEngine engine;
+
+  @Override
+  public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
+    super.configureFlutterEngine(flutterEngine);
+    engine = flutterEngine;
+  }
+}
diff --git a/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/drawable/ic_launcher_background.xml b/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..9ed3468
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector
+    android:height="108dp"
+    android:width="108dp"
+    android:viewportHeight="108"
+    android:viewportWidth="108"
+    xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="#FF2196F3"
+          android:pathData="M0,0h108v108h-108z"/>
+    <path android:fillColor="#00000000" android:pathData="M9,0L9,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M19,0L19,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M29,0L29,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M39,0L39,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M49,0L49,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M59,0L59,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M69,0L69,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M79,0L79,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M89,0L89,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M99,0L99,108"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,9L108,9"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,19L108,19"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,29L108,29"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,39L108,39"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,49L108,49"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,59L108,59"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,69L108,69"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,79L108,79"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,89L108,89"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M0,99L108,99"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M19,29L89,29"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M19,39L89,39"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M19,49L89,49"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M19,59L89,59"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M19,69L89,69"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M19,79L89,79"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M29,19L29,89"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M39,19L39,89"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M49,19L49,89"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M59,19L59,89"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M69,19L69,89"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+    <path android:fillColor="#00000000" android:pathData="M79,19L79,89"
+          android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
+</vector>
diff --git a/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..db77bb4
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..17987b7
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..09d4391
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..d5f1c8d
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..4d6372e
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/values/styles.xml b/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..6c1d1ec
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+  <style
+      name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
+    <item name="android:windowBackground">@drawable/ic_launcher_background</item>
+  </style>
+</resources>
\ No newline at end of file
diff --git a/packages/quick_actions/quick_actions_android/example/android/build.gradle b/packages/quick_actions/quick_actions_android/example/android/build.gradle
new file mode 100644
index 0000000..e101ac0
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/android/build.gradle
@@ -0,0 +1,29 @@
+buildscript {
+    repositories {
+        google()
+        mavenCentral()
+    }
+
+    dependencies {
+        classpath 'com.android.tools.build:gradle:3.3.0'
+    }
+}
+
+allprojects {
+    repositories {
+        google()
+        mavenCentral()
+    }
+}
+
+rootProject.buildDir = '../build'
+subprojects {
+    project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
+    project.evaluationDependsOn(':app')
+}
+
+task clean(type: Delete) {
+    delete rootProject.buildDir
+}
diff --git a/packages/quick_actions/quick_actions_android/example/android/gradle.properties b/packages/quick_actions/quick_actions_android/example/android/gradle.properties
new file mode 100644
index 0000000..38c8d45
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/android/gradle.properties
@@ -0,0 +1,4 @@
+org.gradle.jvmargs=-Xmx1536M
+android.enableR8=true
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/packages/quick_actions/quick_actions_android/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/quick_actions/quick_actions_android/example/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..019065d
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
diff --git a/packages/quick_actions/quick_actions_android/example/android/settings.gradle b/packages/quick_actions/quick_actions_android/example/android/settings.gradle
new file mode 100644
index 0000000..115da6c
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/android/settings.gradle
@@ -0,0 +1,15 @@
+include ':app'
+
+def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
+
+def plugins = new Properties()
+def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
+if (pluginsFile.exists()) {
+    pluginsFile.withInputStream { stream -> plugins.load(stream) }
+}
+
+plugins.each { name, path ->
+    def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
+    include ":$name"
+    project(":$name").projectDir = pluginDirectory
+}
diff --git a/packages/quick_actions/quick_actions_android/example/integration_test/quick_actions_test.dart b/packages/quick_actions/quick_actions_android/example/integration_test/quick_actions_test.dart
new file mode 100644
index 0000000..f9c42ad
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/integration_test/quick_actions_test.dart
@@ -0,0 +1,24 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter_test/flutter_test.dart';
+import 'package:integration_test/integration_test.dart';
+import 'package:quick_actions_platform_interface/quick_actions_platform_interface.dart';
+
+void main() {
+  IntegrationTestWidgetsFlutterBinding.ensureInitialized();
+
+  testWidgets('Can set shortcuts', (WidgetTester tester) async {
+    final QuickActionsPlatform quickActions = QuickActionsPlatform.instance;
+    await quickActions.initialize((String value) {});
+
+    const ShortcutItem shortCutItem = ShortcutItem(
+      type: 'action_one',
+      localizedTitle: 'Action one',
+      icon: 'AppIcon',
+    );
+    expect(
+        quickActions.setShortcutItems(<ShortcutItem>[shortCutItem]), completes);
+  });
+}
diff --git a/packages/quick_actions/quick_actions_android/example/lib/main.dart b/packages/quick_actions/quick_actions_android/example/lib/main.dart
new file mode 100644
index 0000000..06f1410
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/lib/main.dart
@@ -0,0 +1,82 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// ignore_for_file: public_member_api_docs
+
+import 'package:flutter/material.dart';
+import 'package:quick_actions_android/quick_actions_android.dart';
+
+void main() {
+  runApp(MyApp());
+}
+
+class MyApp extends StatelessWidget {
+  @override
+  Widget build(BuildContext context) {
+    return MaterialApp(
+      title: 'Flutter Quick Actions Demo',
+      theme: ThemeData(
+        primarySwatch: Colors.blue,
+      ),
+      home: const MyHomePage(),
+    );
+  }
+}
+
+class MyHomePage extends StatefulWidget {
+  const MyHomePage({Key? key}) : super(key: key);
+
+  @override
+  _MyHomePageState createState() => _MyHomePageState();
+}
+
+class _MyHomePageState extends State<MyHomePage> {
+  String shortcut = 'no action set';
+
+  @override
+  void initState() {
+    super.initState();
+
+    final QuickActionsAndroid quickActions = QuickActionsAndroid();
+    quickActions.initialize((String shortcutType) {
+      setState(() {
+        if (shortcutType != null) {
+          shortcut = shortcutType;
+        }
+      });
+    });
+
+    quickActions.setShortcutItems(<ShortcutItem>[
+      const ShortcutItem(
+        type: 'action_one',
+        localizedTitle: 'Action one',
+        icon: 'AppIcon',
+      ),
+      const ShortcutItem(
+          type: 'action_two',
+          localizedTitle: 'Action two',
+          icon: 'ic_launcher'),
+    ]).then((void _) {
+      setState(() {
+        if (shortcut == 'no action set') {
+          shortcut = 'actions ready';
+        }
+      });
+    });
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      appBar: AppBar(
+        title: Text(shortcut),
+      ),
+      body: const Center(
+        child: Text('On home screen, long press the app icon to '
+            'get Action one or Action two options. Tapping on that action should  '
+            'set the toolbar title.'),
+      ),
+    );
+  }
+}
diff --git a/packages/quick_actions/quick_actions_android/example/pubspec.yaml b/packages/quick_actions/quick_actions_android/example/pubspec.yaml
new file mode 100644
index 0000000..5317097
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/pubspec.yaml
@@ -0,0 +1,28 @@
+name: quick_actions_example
+description: Demonstrates how to use the quick_actions plugin.
+publish_to: none
+
+environment:
+  sdk: ">=2.15.0 <3.0.0"
+  flutter: ">=2.8.0"
+
+dependencies:
+  flutter:
+    sdk: flutter
+  quick_actions_android:
+    # When depending on this package from a real application you should use:
+    #   quick_actions_android: ^x.y.z
+    # See https://dart.dev/tools/pub/dependencies#version-constraints
+    # The example app is bundled with the plugin so we use a path dependency on
+    # the parent directory to use the current plugin's version.
+    path: ../
+
+dev_dependencies:
+  espresso: ^0.1.0+2
+  flutter_driver:
+    sdk: flutter
+  integration_test:
+    sdk: flutter
+
+flutter:
+  uses-material-design: true
diff --git a/packages/quick_actions/quick_actions_android/example/test_driver/integration_test.dart b/packages/quick_actions/quick_actions_android/example/test_driver/integration_test.dart
new file mode 100644
index 0000000..4f10f2a
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/example/test_driver/integration_test.dart
@@ -0,0 +1,7 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:integration_test/integration_test_driver.dart';
+
+Future<void> main() => integrationDriver();
diff --git a/packages/quick_actions/quick_actions_android/lib/quick_actions_android.dart b/packages/quick_actions/quick_actions_android/lib/quick_actions_android.dart
new file mode 100644
index 0000000..99a54e9
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/lib/quick_actions_android.dart
@@ -0,0 +1,56 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter/foundation.dart';
+import 'package:flutter/services.dart';
+import 'package:quick_actions_platform_interface/quick_actions_platform_interface.dart';
+
+export 'package:quick_actions_platform_interface/types/types.dart';
+
+const MethodChannel _channel =
+    MethodChannel('plugins.flutter.io/quick_actions_android');
+
+/// An implementation of [QuickActionsPlatform] that for Android.
+class QuickActionsAndroid extends QuickActionsPlatform {
+  /// Registers this class as the default instance of [QuickActionsPlatform].
+  static void registerWith() {
+    QuickActionsPlatform.instance = QuickActionsAndroid();
+  }
+
+  /// The MethodChannel that is being used by this implementation of the plugin.
+  @visibleForTesting
+  MethodChannel get channel => _channel;
+
+  @override
+  Future<void> initialize(QuickActionHandler handler) async {
+    channel.setMethodCallHandler((MethodCall call) async {
+      assert(call.method == 'launch');
+      handler(call.arguments as String);
+    });
+    final String? action =
+        await channel.invokeMethod<String?>('getLaunchAction');
+    if (action != null) {
+      handler(action);
+    }
+  }
+
+  @override
+  Future<void> setShortcutItems(List<ShortcutItem> items) async {
+    final List<Map<String, String?>> itemsList =
+        items.map(_serializeItem).toList();
+    await channel.invokeMethod<void>('setShortcutItems', itemsList);
+  }
+
+  @override
+  Future<void> clearShortcutItems() =>
+      channel.invokeMethod<void>('clearShortcutItems');
+
+  Map<String, String?> _serializeItem(ShortcutItem item) {
+    return <String, String?>{
+      'type': item.type,
+      'localizedTitle': item.localizedTitle,
+      'icon': item.icon,
+    };
+  }
+}
diff --git a/packages/quick_actions/quick_actions_android/pubspec.yaml b/packages/quick_actions/quick_actions_android/pubspec.yaml
new file mode 100644
index 0000000..cf9971d
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/pubspec.yaml
@@ -0,0 +1,30 @@
+name: quick_actions_android
+description: An implementation for the Android platform of the Flutter `quick_actions` plugin.
+repository: https://github.com/flutter/plugins/tree/main/packages/quick_actions/quick_actions_android
+issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+in_app_purchase%22
+version: 0.6.0+9
+
+environment:
+  sdk: ">=2.15.0 <3.0.0"
+  flutter: ">=2.8.0"
+
+flutter:
+  plugin:
+    implements: quick_actions
+    platforms:
+      android:
+        package: io.flutter.plugins.quickactions
+        pluginClass: QuickActionsPlugin
+        dartPluginClass: QuickActionsAndroid
+
+dependencies:
+  flutter:
+    sdk: flutter
+  quick_actions_platform_interface: ^1.0.0
+
+dev_dependencies:
+  flutter_test:
+    sdk: flutter
+  integration_test:
+    sdk: flutter
+  plugin_platform_interface: ^2.1.2
diff --git a/packages/quick_actions/quick_actions_android/test/quick_actions_android_test.dart b/packages/quick_actions/quick_actions_android/test/quick_actions_android_test.dart
new file mode 100644
index 0000000..40cfe45
--- /dev/null
+++ b/packages/quick_actions/quick_actions_android/test/quick_actions_android_test.dart
@@ -0,0 +1,164 @@
+// Copyright 2013 The Flutter Authors. 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 'package:flutter/services.dart';
+import 'package:flutter_test/flutter_test.dart';
+import 'package:quick_actions_android/quick_actions_android.dart';
+import 'package:quick_actions_platform_interface/quick_actions_platform_interface.dart';
+
+void main() {
+  TestWidgetsFlutterBinding.ensureInitialized();
+
+  group('$QuickActionsAndroid', () {
+    late List<MethodCall> log;
+
+    setUp(() {
+      log = <MethodCall>[];
+    });
+
+    QuickActionsAndroid buildQuickActionsPlugin() {
+      final QuickActionsAndroid quickActions = QuickActionsAndroid();
+      quickActions.channel
+          .setMockMethodCallHandler((MethodCall methodCall) async {
+        log.add(methodCall);
+        return '';
+      });
+
+      return quickActions;
+    }
+
+    test('registerWith() registers correct instance', () {
+      QuickActionsAndroid.registerWith();
+      expect(QuickActionsPlatform.instance, isA<QuickActionsAndroid>());
+    });
+
+    group('#initialize', () {
+      test('passes getLaunchAction on launch method', () {
+        final QuickActionsAndroid quickActions = buildQuickActionsPlugin();
+        quickActions.initialize((String type) {});
+
+        expect(
+          log,
+          <Matcher>[
+            isMethodCall('getLaunchAction', arguments: null),
+          ],
+        );
+      });
+
+      test('initialize', () async {
+        final QuickActionsAndroid quickActions = buildQuickActionsPlugin();
+        final Completer<bool> quickActionsHandler = Completer<bool>();
+        await quickActions
+            .initialize((_) => quickActionsHandler.complete(true));
+        expect(
+          log,
+          <Matcher>[
+            isMethodCall('getLaunchAction', arguments: null),
+          ],
+        );
+        log.clear();
+
+        expect(quickActionsHandler.future, completion(isTrue));
+      });
+    });
+
+    group('#setShortCutItems', () {
+      test('passes shortcutItem through channel', () {
+        final QuickActionsAndroid quickActions = buildQuickActionsPlugin();
+        quickActions.initialize((String type) {});
+        quickActions.setShortcutItems(<ShortcutItem>[
+          const ShortcutItem(
+              type: 'test', localizedTitle: 'title', icon: 'icon.svg')
+        ]);
+
+        expect(
+          log,
+          <Matcher>[
+            isMethodCall('getLaunchAction', arguments: null),
+            isMethodCall('setShortcutItems', arguments: <Map<String, String>>[
+              <String, String>{
+                'type': 'test',
+                'localizedTitle': 'title',
+                'icon': 'icon.svg',
+              }
+            ]),
+          ],
+        );
+      });
+
+      test('setShortcutItems with demo data', () async {
+        const String type = 'type';
+        const String localizedTitle = 'localizedTitle';
+        const String icon = 'icon';
+        final QuickActionsAndroid quickActions = buildQuickActionsPlugin();
+        await quickActions.setShortcutItems(
+          const <ShortcutItem>[
+            ShortcutItem(type: type, localizedTitle: localizedTitle, icon: icon)
+          ],
+        );
+        expect(
+          log,
+          <Matcher>[
+            isMethodCall(
+              'setShortcutItems',
+              arguments: <Map<String, String>>[
+                <String, String>{
+                  'type': type,
+                  'localizedTitle': localizedTitle,
+                  'icon': icon,
+                }
+              ],
+            ),
+          ],
+        );
+        log.clear();
+      });
+    });
+
+    group('#clearShortCutItems', () {
+      test('send clearShortcutItems through channel', () {
+        final QuickActionsAndroid quickActions = buildQuickActionsPlugin();
+        quickActions.initialize((String type) {});
+        quickActions.clearShortcutItems();
+
+        expect(
+          log,
+          <Matcher>[
+            isMethodCall('getLaunchAction', arguments: null),
+            isMethodCall('clearShortcutItems', arguments: null),
+          ],
+        );
+      });
+
+      test('clearShortcutItems', () {
+        final QuickActionsAndroid quickActions = buildQuickActionsPlugin();
+        quickActions.clearShortcutItems();
+        expect(
+          log,
+          <Matcher>[
+            isMethodCall('clearShortcutItems', arguments: null),
+          ],
+        );
+        log.clear();
+      });
+    });
+  });
+
+  group('$ShortcutItem', () {
+    test('Shortcut item can be constructed', () {
+      const String type = 'type';
+      const String localizedTitle = 'title';
+      const String icon = 'foo';
+
+      const ShortcutItem item =
+          ShortcutItem(type: type, localizedTitle: localizedTitle, icon: icon);
+
+      expect(item.type, type);
+      expect(item.localizedTitle, localizedTitle);
+      expect(item.icon, icon);
+    });
+  });
+}
