diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml
index 1bf5124d..088ea810 100644
--- a/android/src/main/AndroidManifest.xml
+++ b/android/src/main/AndroidManifest.xml
@@ -1 +1 @@
-
+
diff --git a/android/src/main/kotlin/es/antonborri/home_widget/HomeWidgetPlugin.kt b/android/src/main/kotlin/es/antonborri/home_widget/HomeWidgetPlugin.kt
index 46a00b65..044c9a83 100644
--- a/android/src/main/kotlin/es/antonborri/home_widget/HomeWidgetPlugin.kt
+++ b/android/src/main/kotlin/es/antonborri/home_widget/HomeWidgetPlugin.kt
@@ -2,9 +2,13 @@ package es.antonborri.home_widget
import android.app.Activity
import android.appwidget.AppWidgetManager
-import android.content.*
+import android.appwidget.AppWidgetProviderInfo
+import android.content.BroadcastReceiver
+import android.content.ComponentName
+import android.content.Context
+import android.content.Intent
+import android.content.SharedPreferences
import android.os.Build
-import androidx.annotation.NonNull
import io.flutter.embedding.engine.plugins.FlutterPlugin
import io.flutter.embedding.engine.plugins.activity.ActivityAware
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding
@@ -26,7 +30,7 @@ class HomeWidgetPlugin : FlutterPlugin, MethodCallHandler, ActivityAware,
private var activity: Activity? = null
private var receiver: BroadcastReceiver? = null
- override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
+ override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
channel = MethodChannel(flutterPluginBinding.binaryMessenger, "home_widget")
channel.setMethodCallHandler(this)
@@ -35,7 +39,7 @@ class HomeWidgetPlugin : FlutterPlugin, MethodCallHandler, ActivityAware,
context = flutterPluginBinding.applicationContext
}
- override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) {
+ override fun onMethodCall(call: MethodCall, result: Result) {
when (call.method) {
"saveWidgetData" -> {
if (call.hasArgument("id") && call.hasArgument("data")) {
@@ -52,7 +56,7 @@ class HomeWidgetPlugin : FlutterPlugin, MethodCallHandler, ActivityAware,
else -> result.error("-10", "Invalid Type ${data!!::class.java.simpleName}. Supported types are Boolean, Float, String, Double, Long", IllegalArgumentException())
}
} else {
- prefs.remove(id);
+ prefs.remove(id)
}
result.success(prefs.commit())
} else {
@@ -139,13 +143,54 @@ class HomeWidgetPlugin : FlutterPlugin, MethodCallHandler, ActivityAware,
result.error("-4", "No Widget found with Name $className. Argument 'name' must be the same as your AppWidgetProvider you wish to update", classException)
}
}
+ "getInstalledWidgets" -> {
+ try {
+ val pinnedWidgetInfoList = getInstalledWidgets(context)
+ result.success(pinnedWidgetInfoList)
+ } catch (e: Exception) {
+ result.error("-5", "Failed to get installed widgets: ${e.message}", null)
+ }
+ }
else -> {
result.notImplemented()
}
}
}
- override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) {
+ private fun getInstalledWidgets(context: Context): List