【问题标题】:android_alarm_manager_plus not triggering callbackandroid_alarm_manager_plus 没有触发回调
【发布时间】:2021-08-18 17:07:28
【问题描述】:

成功地遵循了这个插件的示例说明,但只有第一个调试会话......所以我知道它可以工作。 现在,我没有收到任何错误,但从未触发警报?!?追踪到插件,那里没有错误。你是我最后的手段,谷歌没有提供解决方案,我没有任何头发可以拉......

在我连接的设备上调试: 三星型号 SM-J120W 安卓版本 6.0.1

android_alarm_manager_plus 1.0.1

AndroidManifest.xml:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
...
<service
  android:name="io.flutter.plugins.androidalarmmanager.AlarmService"
  android:permission="android.permission.BIND_JOB_SERVICE"
  android:exported="false"/>
<receiver
  android:name="io.flutter.plugins.androidalarmmanager.AlarmBroadcastReceiver"
  android:exported="false"/>
<receiver
  android:name="io.flutter.plugins.androidalarmmanager.RebootBroadcastReceiver"
  android:enabled="false">
  <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED"/>
  </intent-filter>
</receiver>

在 main.dart 中:

// top level function is never called :-(
void callback() {
  final DateTime now = DateTime.now();
  final int isolateId = Isolate.current.hashCode;
  print("[$now] Hello, world! isolate=$isolateId function='$callback'");
}

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  bool test = await AndroidAlarmManager.initialize();
  print('initialize test = $test'); // **_returns true_**
  ...
}

在我的主页中:

Center(
  child: Switch(
  value: isOn,
  onChanged: (value) {
    setState(() {
      isOn = value;
    });
    if (isOn == true) {
      AndroidAlarmManager.periodic(Duration(seconds: 10), alarmId, **callback**, startAt: DateTime.now(), exact: true, wakeup: true)
          .then((value) => print('Alarm Timer Started = $value')); // **_returns true_**
    } else {
      AndroidAlarmManager.cancel(alarmId).then((value) => print('Alarm Timer Canceled = $value'));
    }
  },
)),

扑医生:

[√] Flutter (Channel stable, 2.2.1, on Microsoft Windows [Version 10.0.19042.985], locale en-US)
[√] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[√] Chrome - develop for the web
[√] Android Studio
[√] VS Code (version 1.56.2)
[√] Connected device (3 available)

• No issues found!

我可以提供任何遗漏的信息吗?

感谢您提供的任何帮助/建议!

【问题讨论】:

  • 第一次会话是什么意思?它只会触发一次,永远不会再次触发,对吗?
  • 不,这意味着它仅在我第一次调试此代码时才起作用……三天前!奇怪!
  • 只需尝试从手机上卸载您的应用,然后再次执行 flutter clean 构建。因为我只是运行他们的示例并且它工作正常。
  • 再次运行他们的示例,现在给我错误... E/flutter (6675): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] 未处理的异常:MissingPluginException(没有实现在通道 plugins.flutter.io/shared_preferences 上找到方法 getAll) E/flutter(6675):此示例使用较旧的插件版本。如果我“升级”我会收到大量错误... :-(
  • 您是否尝试过克隆他们的存储库示例?尝试克隆并运行他们的示例。

标签: flutter flutter-plugin flutter-packages


【解决方案1】:

使用以下服务代码更新 AndroidManifest.xml:

<service
    android:name="dev.fluttercommunity.plus.androidalarmmanager.AlarmService"
    android:permission="android.permission.BIND_JOB_SERVICE"
    android:exported="false"/>
<receiver
    android:name="dev.fluttercommunity.plus.androidalarmmanager.AlarmBroadcastReceiver"
    android:exported="false"/>
<receiver
    android:name="dev.fluttercommunity.plus.androidalarmmanager.RebootBroadcastReceiver"
    android:enabled="false">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"></action>
    </intent-filter>
</receiver>

【讨论】:

    猜你喜欢
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 2023-02-12
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    • 2019-03-27
    相关资源
    最近更新 更多