初始化工作管理器并创建任一任务后,如果我们在任务执行中使用任何插件,它将无法被识别并抛出如下错误
MissingPluginException(在通道 lyokone/location 上找不到方法 getLocation 的实现)
实际代码:
Workmanager.executeTask((task, inputData) async {
Location locationObject = Location();
locationObject.getLocation();
print(locationObject);
return Future.value(true);
}
基本上,工作管理器任务中使用的任何其他插件似乎都无法识别。
我缺少什么,我需要重新注册所有插件吗?
I/flutter (16120): Location permission has error
I/flutter (16120): MissingPluginException(No implementation found for method serviceEnabled on channel lyokone/location)
如果想从 WorkManagerexecuteTask 内部使用其他插件;需要创建自定义应用程序类并需要注册其他插件。如果 WorkManager 插件本身需要在执行任务中使用,则还需要注册该插件。此外,这个新创建的自定义应用程序需要在 AndroidManifest.xml 文件中指定。
这个在插件里有提到问题链接因为它不能完全由插件本身处理。
import io.flutter.app.FlutterApplication;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugins.androidalarmmanager.AlarmService;
import io.flutter.plugins.androidalarmmanager.AndroidAlarmManagerPlugin;
import com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin;
import io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin;
import io.flutter.plugins.firebase.cloudfirestore.CloudFirestorePlugin;
import be.tramckrijte.workmanager.WorkmanagerPlugin;
public class CustomApplication extends FlutterApplication implements PluginRegistry.PluginRegistrantCallback {
@Override
public void onCreate() {
super.onCreate();
WorkmanagerPlugin.setPluginRegistrantCallback(this);
}
@Override
public void registerWith(PluginRegistry registry) {
// GeneratedPluginRegistrant.registerWith(registry);
//add AndroidAlarmManagerPlugin plugin register if you work with arlarm
AndroidAlarmManagerPlugin.registerWith(registry.registrarFor("io.flutter.plugins.androidalarmmanager.AndroidAlarmManagerPlugin"));
//add SharedPreferencesPlugin plugin register if you work with share preferences
SharedPreferencesPlugin.registerWith(registry.registrarFor("io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin"));
// something else...
FlutterLocalNotificationsPlugin.registerWith(registry.registrarFor("com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin"));
CloudFirestorePlugin.registerWith(registry.registrarFor("io.flutter.plugins.firebase.cloudfirestore.CloudFirestorePlugin"));
WorkmanagerPlugin.registerWith(registry.registrarFor("be.tramckrijte.workmanager.WorkmanagerPlugin"));
}
}
新创建的CustomApplication类需要在android清单文件的application标签中指定
<application
android:name="packagename.CustomApplication"
Android 特定文件位于 Android 项目文件夹中,请检查下面的屏幕截图。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)