我在 flutter 中制作了插件,它定义了应用程序的服务。例如
MyFirebaseMessagingService
。
众所周知,我们需要从AndroidManifest.xml中引用它。 我尝试在插件的 AndroidManifest 中定义服务并将此插件包含到应用程序中,但当我构建应用程序时,它不会调用。
<service android:name=".MyFirebaseMessagingService" android:exported="false" android:directBootAware="true">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
除此之外,我尝试从应用程序的
.MyFirebaseMessagingService
引用AndroidMainfiest
,如下所示:com.example.myPlugin.MyfirebaseMessagingService
但它看不到它。
所以问题是,是否有办法让应用程序使用插件中的服务?
当我做同样的事情时,我遇到了类似的问题 - 从外部插件引用 android 服务。
我查看了其他做同样事情的包,让它工作的想法是在插件的 android 部分的
AndroidManifest
文件中定义你的服务(在 {your_plugin_directory}/android/src/main/AndroidManifest.xml
中)。
执行此操作后,您将能够使用该包在应用程序中引用该服务。
根据您的情况,将以下内容添加到
{your_plugin_directory}/android/src/main/AndroidManifest.xml
:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myPlugin">
<application>
<service
android:name=".MyFirebaseMessagingService"
android:enabled="true"
android:exported="false"
android:directBootAware="true"/>
</application>
</manifest>
然后在您的应用程序中
AndroidManifest
,声明服务如下:
<service android:name="com.example.myPlugin.MyfirebaseMessagingService"/>
灵感:
The Flutter Background Service
包=>https://github.com/ekasetiawans/flutter_background_service/blob/master/packages/flutter_background_service_android/android/src/main/AndroidManifest.xml
我希望这有帮助!