Flutter:在接受位置权限的同时进入异常状态

问题描述 投票:0回答:3

java.lang.IncompatibleClassChangeError: Found interface com.google.android.gms.location.SettingsClient, but class was expected ('com.google.android.gms.location.SettingsClient'的声明出现在/data/app/~~ vK3x6kuSR8MsWIHWo0p-pg==/com.wst.occser-5pgr4NMzu9vj5rO5C1Dcew==/base.apk!classes3.dex) E/AndroidRuntime(15597): 在 com.lyokone.location.FlutterLocation.startRequestingLocation(FlutterLocation.java:422) E/AndroidRuntime(15597): 在 com.lyokone.location.FlutterLocation.onRequestPermissionsResultHandler(FlutterLocation.java:131) E/AndroidRuntime(15597): 在 com.lyokone.location.FlutterLocation.onRequestPermissionsResult(FlutterLocation.java:122) E/AndroidRuntime(15597): 在 io.flutter.embedding.engine.FlutterEngineConnectionRegistry$FlutterEngineActivityPluginBinding.onRequestPermissionsResult(FlutterEngineConnectionRegistry.java:777) E/AndroidRuntime(15597): 在 io.flutter.embedding.engine.FlutterEngineConnectionRegistry.onRequestPermissionsResult(FlutterEngineConnectionRegistry.java:409) E/AndroidRuntime(15597): 在 io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onRequestPermissionsResult(FlutterActivityAndFragmentDelegate.java:757) E/AndroidRuntime(15597): 在 io.flutter.embedding.android.FlutterFragment.onRequestPermissionsResult(FlutterFragment.java:915) E/AndroidRuntime(15597): 在 io.flutter.embedding.android.FlutterFragmentActivity.onRequestPermissionsResult(FlutterFragmentActivity.java:549) E/AndroidRuntime(15597): 在 android.app.Activity.dispatchRequestPermissionsResult(Activity.java:8619) E/AndroidRuntime(15597): 在 android.app.Activity.dispatchActivityResult(Activity.java:8476) E/AndroidRuntime(15597): 在 android.app.ActivityThread.deliverResults(ActivityThread.java:5560) E/AndroidRuntime(15597): 在 android.app.ActivityThread.handleSendResult(ActivityThread.java:5606) E/AndroidRuntime(15597): 在 android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:54) E/AndroidRuntime(15597): 在 android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45) E/AndroidRuntime(15597): 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) E/AndroidRuntime(15597): 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) E/AndroidRuntime(15597): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2374) E/AndroidRuntime(15597): 在 android.os.Handler.dispatchMessage(Handler.java:106) E/AndroidRuntime(15597): 在 android.os.Looper.loopOnce(Looper.java:233) E/AndroidRuntime(15597): 在 android.os.Looper.loop(Looper.java:344) E/AndroidRuntime(15597): 在 android.app.ActivityThread.main(ActivityThread.java:8248) E/AndroidRuntime(15597): 在 java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime(15597): 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:589) E/AndroidRuntime(15597): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1071) E/Parcel (15597):此处不支持读取 NULL 字符串。 I/Quality (15597): SlowBinder: com.wst.occser 到 android.app.IActivityManager 成本= 284 代码= 7 I/Process (15597):发送信号。 PID:15597 SIG:9

使用 Android 13 设备,位置插件 ^4.4.0,firebase_messaging ^14.1.2

flutter permissions location
3个回答
3
投票

此问题源自 location 插件,该插件引用了旧版本的 google play 服务插件。

要解决此问题,您需要更新位置包中的“com.google.android.gms:play-services-location”版本

改变依赖 来自“api 'com.google.android.gms:play-services-location:16+'”

到“api'com.google.android.gms:play-services-location:21.0.1'”

最后,保存并重建项目


0
投票

您需要在位置包的本地副本中手动编辑

Android/build.gradle
文件。包托管在 pub 缓存文件夹中。文件夹的完整路径:
flutter/.pub-cache/hosted/pub.dartlang.org/location-4.3.0/

替换这一行:

api 'com.google.android.gms:play-services-location:16.+'

有了这个:

api 'com.google.android.gms:play-services-location:21.0.1'

注意:您可能有该软件包的多个版本。您需要找出您的项目当前正在使用哪个并编辑那个。


0
投票

将此行添加到您的

android/app/build.gradle

implementation 'com.google.android.gms:play-services-location:20.0.0'

并重新运行应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.