Skip to content

Commit

Permalink
feat(android): support widget provider with diff androidPackageName
Browse files Browse the repository at this point in the history
  • Loading branch information
noxasch committed Dec 13, 2023
1 parent b434e08 commit c24a6df
Show file tree
Hide file tree
Showing 8 changed files with 91 additions and 47 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ plugin.
in `app_widget/example/integration_test/app_widget_test.dart`

```sh
cd app_widget/example
# this will require a connected device for android
flutter test integration_test/app_widget_test.dart
```

2 changes: 1 addition & 1 deletion app_widget/.fvm/fvm_config.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"flutterSdkVersion": "3.0.5",
"flutterSdkVersion": "3.13.8",
"flavors": {}
}
5 changes: 5 additions & 0 deletions app_widget_android/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## 0.3.0

*feat(android): support widget provider with different package name
*fix(android): fix MainActivity not using application package name

## 0.2.1

* fix(android): onClickWidget callback should be independent on each widget
Expand Down
2 changes: 1 addition & 1 deletion app_widget_android/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'

android {
compileSdkVersion 31
compileSdkVersion 33

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ class AppWidgetMethodCallHandler(private val context: Context, )
val widgetLayoutId: Int = context.resources.getIdentifier(widgetLayout, "layout", context.packageName)
val payload = call.argument<String>("payload")
val url = call.argument<String>("url")
val activityClass = Class.forName("$androidPackageName.MainActivity")
val activityClass = Class.forName("${context.packageName}.MainActivity")
val appWidgetManager = AppWidgetManager.getInstance(context)
val pendingIntent = createPendingClickIntent(activityClass, widgetId, payload, url)
val textViewsMap = call.argument<Map<String, String>>("textViews")
Expand Down Expand Up @@ -170,7 +170,7 @@ class AppWidgetMethodCallHandler(private val context: Context, )
context.resources.getIdentifier(widgetLayout, "layout", context.packageName)
val payload = call.argument<String>("payload")
val url = call.argument<String>("url")
val activityClass = Class.forName("$androidPackageName.MainActivity")
val activityClass = Class.forName("${context.packageName}.MainActivity")
val appWidgetManager = AppWidgetManager.getInstance(context)
val pendingIntent = createPendingClickIntent(activityClass, widgetId, payload, url)
val textViewsMap = call.argument<Map<String, String>>("textViews")
Expand Down
104 changes: 67 additions & 37 deletions app_widget_android/example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -12,56 +12,64 @@ packages:
dependency: transitive
description:
name: app_widget_platform_interface
url: "https://pub.dartlang.org"
sha256: "75583ff13e5b01f7204397990e7d885a7c3d261f68c570b09c58581fd30518d7"
url: "https://pub.dev"
source: hosted
version: "0.2.0"
async:
dependency: transitive
description:
name: async
url: "https://pub.dartlang.org"
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
url: "https://pub.dev"
source: hosted
version: "2.9.0"
version: "2.11.0"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
url: "https://pub.dartlang.org"
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
url: "https://pub.dev"
source: hosted
version: "2.1.0"
version: "2.1.1"
characters:
dependency: transitive
description:
name: characters
url: "https://pub.dartlang.org"
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
url: "https://pub.dev"
source: hosted
version: "1.2.1"
version: "1.3.0"
clock:
dependency: transitive
description:
name: clock
url: "https://pub.dartlang.org"
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
url: "https://pub.dev"
source: hosted
version: "1.1.1"
collection:
dependency: transitive
description:
name: collection
url: "https://pub.dartlang.org"
sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
url: "https://pub.dev"
source: hosted
version: "1.16.0"
version: "1.17.2"
cupertino_icons:
dependency: "direct main"
description:
name: cupertino_icons
url: "https://pub.dartlang.org"
sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be
url: "https://pub.dev"
source: hosted
version: "1.0.5"
fake_async:
dependency: transitive
description:
name: fake_async
url: "https://pub.dartlang.org"
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
flutter:
Expand All @@ -73,7 +81,8 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
url: "https://pub.dartlang.org"
sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c
url: "https://pub.dev"
source: hosted
version: "2.0.1"
flutter_test:
Expand All @@ -85,42 +94,48 @@ packages:
dependency: transitive
description:
name: lints
url: "https://pub.dartlang.org"
sha256: "5cfd6509652ff5e7fe149b6df4859e687fca9048437857cb2e65c8d780f396e3"
url: "https://pub.dev"
source: hosted
version: "2.0.0"
matcher:
dependency: transitive
description:
name: matcher
url: "https://pub.dartlang.org"
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
url: "https://pub.dev"
source: hosted
version: "0.12.12"
version: "0.12.16"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
url: "https://pub.dartlang.org"
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
url: "https://pub.dev"
source: hosted
version: "0.1.5"
version: "0.5.0"
meta:
dependency: transitive
description:
name: meta
url: "https://pub.dartlang.org"
sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
url: "https://pub.dev"
source: hosted
version: "1.8.0"
version: "1.9.1"
path:
dependency: transitive
description:
name: path
url: "https://pub.dartlang.org"
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
url: "https://pub.dev"
source: hosted
version: "1.8.2"
version: "1.8.3"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
url: "https://pub.dartlang.org"
sha256: "075f927ebbab4262ace8d0b283929ac5410c0ac4e7fc123c76429564facfb757"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
sky_engine:
Expand All @@ -132,51 +147,66 @@ packages:
dependency: transitive
description:
name: source_span
url: "https://pub.dartlang.org"
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
url: "https://pub.dev"
source: hosted
version: "1.9.0"
version: "1.10.0"
stack_trace:
dependency: transitive
description:
name: stack_trace
url: "https://pub.dartlang.org"
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
url: "https://pub.dev"
source: hosted
version: "1.10.0"
version: "1.11.0"
stream_channel:
dependency: transitive
description:
name: stream_channel
url: "https://pub.dartlang.org"
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
url: "https://pub.dev"
source: hosted
version: "2.1.0"
version: "2.1.1"
string_scanner:
dependency: transitive
description:
name: string_scanner
url: "https://pub.dartlang.org"
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
url: "https://pub.dev"
source: hosted
version: "1.1.1"
version: "1.2.0"
term_glyph:
dependency: transitive
description:
name: term_glyph
url: "https://pub.dartlang.org"
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
url: "https://pub.dev"
source: hosted
version: "1.2.1"
test_api:
dependency: transitive
description:
name: test_api
url: "https://pub.dartlang.org"
sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
url: "https://pub.dev"
source: hosted
version: "0.4.12"
version: "0.6.0"
vector_math:
dependency: transitive
description:
name: vector_math
url: "https://pub.dartlang.org"
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.1.4"
web:
dependency: transitive
description:
name: web
sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
url: "https://pub.dev"
source: hosted
version: "0.1.4-beta"
sdks:
dart: ">=2.17.6 <3.0.0"
dart: ">=3.1.0-185.0.dev <4.0.0"
flutter: ">=2.5.0"
14 changes: 12 additions & 2 deletions app_widget_android/lib/src/app_widget_android_plugin.dart
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,9 @@ class AppWidgetAndroidPlugin extends AppWidgetAndroid {

final widgetIds =
await _methodChannel.invokeMethod<List<dynamic>?>('getWidgetIds', {
if (androidPackageName != null) ...{
'androidPackageName': androidPackageName,
},
'androidProviderName': androidProviderName,
});

Expand All @@ -90,7 +93,12 @@ class AppWidgetAndroidPlugin extends AppWidgetAndroid {

return _methodChannel.invokeMethod<bool>(
'reloadWidgets',
{'androidProviderName': androidProviderName},
{
if (androidPackageName != null) ...{
'androidPackageName': androidPackageName,
},
'androidProviderName': androidProviderName,
},
);
}

Expand All @@ -107,7 +115,9 @@ class AppWidgetAndroidPlugin extends AppWidgetAndroid {
assert(widgetLayout != null, 'widgetLayout is required for android!');

return _methodChannel.invokeMethod<bool>('updateWidget', {
'androidPackageName': androidPackageName,
if (androidPackageName != null) ...{
'androidPackageName': androidPackageName,
},
'widgetLayout': widgetLayout,
'widgetId': widgetId,
'textViews': textViews,
Expand Down
5 changes: 2 additions & 3 deletions app_widget_android/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
name: app_widget_android
description: Android implementation for app_widget plugin
version: 0.2.1
version: 0.3.0
homepage: https://noxasch.tech/
repository: https://github.com/noxasch/flutter_app_widget/tree/master/app_widget_android
issue_tracker: https://github.com/noxasch/flutter_app_widget/issues

environment:
sdk: ">=2.17.6 <3.0.0"
sdk: ">=2.17.6 <4.0.0"
flutter: ">=2.5.0"

dependencies:
Expand All @@ -30,4 +30,3 @@ flutter:
package: tech.noxasch.app_widget
pluginClass: AppWidgetPlugin
dartPluginClass: AppWidgetAndroid

0 comments on commit c24a6df

Please sign in to comment.