Flutter-geolocator: java.lang.NullPointerException saat mendapatkan lokasi di isolat terpisah

Dibuat pada 18 Mar 2020  ·  6Komentar  ·  Sumber: Baseflow/flutter-geolocator

Laporan Bug

Saya mendapatkan kesalahan saat mencoba mendapatkan lokasi di proses latar belakang sehingga plugin berjalan di isolasi terpisah menggunakan workmanager :

Failed to handle method call
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference

Berikut adalah beberapa jejak tumpukan:

E/MethodChannel#flutter.baseflow.com/google_api_availability/methods( 5234): Failed to handle method call
E/MethodChannel#flutter.baseflow.com/google_api_availability/methods( 5234): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
E/MethodChannel#flutter.baseflow.com/google_api_availability/methods( 5234):    at com.google.android.gms.common.GooglePlayServicesUtilLight.isGooglePlayServicesAvailable(Unknown Source:12)
E/MethodChannel#flutter.baseflow.com/google_api_availability/methods( 5234):    at com.google.android.gms.common.GoogleApiAvailabilityLight.isGooglePlayServicesAvailable(Unknown Source:5)
E/MethodChannel#flutter.baseflow.com/google_api_availability/methods( 5234):    at com.google.android.gms.common.GoogleApiAvailability.isGooglePlayServicesAvailable(Unknown Source:94)
E/MethodChannel#flutter.baseflow.com/google_api_availability/methods( 5234):    at com.google.android.gms.common.GoogleApiAvailabilityLight.isGooglePlayServicesAvailable(Unknown Source:3)
E/MethodChannel#flutter.baseflow.com/google_api_availability/methods( 5234):    at com.google.android.gms.common.GoogleApiAvailability.isGooglePlayServicesAvailable(Unknown Source:93)
E/MethodChannel#flutter.baseflow.com/google_api_availability/methods( 5234):    at com.baseflow.googleapiavailability.GoogleApiAvailabilityPlugin.onMethodCall(GoogleApiAvailabilityPlugin.java:105)
E/MethodChannel#flutter.baseflow.com/google_api_availability/methods( 5234):    at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:231)
E/MethodChannel#flutter.baseflow.com/google_api_availability/methods( 5234):    at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:93)
E/MethodChannel#flutter.baseflow.com/google_api_availability/methods( 5234):    at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:642)
E/MethodChannel#flutter.baseflow.com/google_api_availability/methods( 5234):    at android.os.MessageQueue.nativePollOnce(Native Method)
E/MethodChannel#flutter.baseflow.com/google_api_availability/methods( 5234):    at android.os.MessageQueue.next(MessageQueue.java:336)
E/MethodChannel#flutter.baseflow.com/google_api_availability/methods( 5234):    at android.os.Looper.loop(Looper.java:174)
E/MethodChannel#flutter.baseflow.com/google_api_availability/methods( 5234):    at android.app.ActivityThread.main(ActivityThread.java:7356)
E/MethodChannel#flutter.baseflow.com/google_api_availability/methods( 5234):    at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#flutter.baseflow.com/google_api_availability/methods( 5234):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
E/MethodChannel#flutter.baseflow.com/google_api_availability/methods( 5234):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

Langkah-langkah reproduksi

Saya telah membuat aplikasi sampel untuk mereproduksi masalah: https://github.com/estevez-dev/sample_flutter_app
Itu sudah dikonfigurasikan untuk dijalankan di Gitpod. Cukup ketuk tombol mengambang untuk memulai tugas latar belakang dan Anda akan mendapatkan pengecualian pada getCurrentPosition .
Harap dicatat bahwa aplikasi tidak akan meminta izin lokasi, Anda harus mengizinkannya secara manual dari pengaturan Android.

Konfigurasi

Versi plugin: 5.3.0

Peron:

  • [ ] :iphone: iOS
  • [x] :robot: Android
android in progress bug

Semua 6 komentar

Terima kasih banyak telah mengirimkan masalah ini dan contoh kode ekstensif dan deskripsi kesalahan. Saya akan melihat ini dan mencoba memberikan perbaikan segera.

saya memiliki masalah yang sama, apakah Anda menemukan solusi?

@walide67 , belum ada solusi.

@walide67 , belum ada solusi.

Apakah Anda memiliki solusi untuk melacak lokasi di latar belakang atau latar depan dengan flutter
Mohon bantuannya karena pekerjaan saya terhenti

Masalah ini sekarang harus diselesaikan, kami telah merilis perbaikan terbaru untuk plugin google_api_availability (yang geolocator bergantung pada) memecahkan pengecualian pointer nol.

Karena google_api_availability dirilis sebagai perbaikan terbaru, itu akan diambil secara otomatis, tetapi jika Anda ingin memastikan, perbarui ke geolocator versi 5.3.1.

Dapat mengkonfirmasi itu berfungsi! Terima kasih banyak!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat