Я поддерживаю приложение, использующее MapView, и недавно я получаю исключения NullPointerException при попытке вызвать метод onCreate () MapView.Как ни странно, это происходит только в новых версиях Сервисов Google Play.Когда я возвращаю версию к заводским настройкам по умолчанию, MapView работает без помех.То есть работает на 9.8.79, а не на 14.3.66.Изменение версии Play Services на всех производственных контроллерах невозможно.
Что я пробовал
- Проверка ключа API: не проблема.В любом случае этого не могло быть, так как он не работал бы и с более старой версией Play Services.
- Обновление зависимости play-services-maps с 8.4.0 (по умолчанию от старых дней) до 16.0.0, Самый последний.Хотя это очищает исключение, MapView никогда не удается завершить инициализацию.Все, что он делает - это отображает черное пространство с текстом «Сервисы Google Play обновляются», несмотря на то, что оно было обновлено до 14.3.66.
- Предварительная инициализация с помощью MapsInitializer.initialize ();В этом не должно быть необходимости, поскольку документы говорят, что getMapAsync () делает это автоматически, но я все равно попробовал.Никаких изменений в поведении.
- Проверено расположение файлов.Я действительно надеялся, что это как-то проблема, но findViewById () вернул действительную ссылку, так что не повезло.
Есть несколько вопросов с похожими названиями, поэтому я бы хотел предупредить штормиз [дубликата] тегов сейчас.Каждый другой вопрос, который я видел, содержал разные детали в трассировке стека, и предлагаемые ответы либо не подходили, либо не работали для моей проблемы.
LogCat
10-11 10:36:59.644 2386-2386/net.xconsulting.fairtrak E/DynamiteLoaderImpl: Error creating module context: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.contains(java.lang.CharSequence)' on a null object reference
10-11 10:36:59.680 2386-2386/net.xconsulting.fairtrak E/AndroidRuntime: FATAL EXCEPTION: main
Process: net.xconsulting.fairtrak, PID: 2386
java.lang.RuntimeException: Unable to start activity ComponentInfo{net.xconsulting.fairtrak/net.xconsulting.fairtrak.activity.NotesActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.contains(java.lang.CharSequence)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2547)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2613)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1469)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.contains(java.lang.CharSequence)' on a null object reference
at android.content.ContentResolver.checkLeakDetectIgnoreList(ContentResolver.java:2695)
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1178)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:958)
at android.content.ContentResolver.openFileDescriptor(ContentResolver.java:811)
at android.content.ContentResolver.openFileDescriptor(ContentResolver.java:765)
at tns.a(:com.google.android.gms@14366020@14.3.66 (040406-213742215):33)
at tns.a(:com.google.android.gms@14366020@14.3.66 (040406-213742215):11)
at com.google.android.gms.chimera.container.DynamiteLoaderImpl.createModuleContextNoCrashUtils(:com.google.android.gms@14366020@14.3.66 (040406-213742215):11)
at com.google.android.gms.dynamite.DynamiteModule.b(:com.google.android.gms@14366020@14.3.66 (040406-213742215):12)
at com.google.android.gms.dynamite.DynamiteModule.a(:com.google.android.gms@14366020@14.3.66 (040406-213742215):53)
at com.google.android.gms.dynamite.DynamiteModule.a(:com.google.android.gms@14366020@14.3.66 (040406-213742215):76)
at oky.a(:com.google.android.gms@14366020@14.3.66 (040406-213742215):1)
at com.google.android.gms.maps.internal.CreatorImpl.a(:com.google.android.gms@14366020@14.3.66 (040406-213742215):8)
at com.google.android.gms.maps.internal.CreatorImpl.newMapViewDelegate(:com.google.android.gms@14366020@14.3.66 (040406-213742215):1)
at actl.a(:com.google.android.gms@14366020@14.3.66 (040406-213742215):21)
at cje.onTransact(:com.google.android.gms@14366020@14.3.66 (040406-213742215):3)
at android.os.Binder.transact(Binder.java:392)
at com.google.android.gms.maps.internal.zzc$zza$zza.zza(Unknown Source)
at com.google.android.gms.maps.MapView$zzb.zzzW(Unknown Source)
at com.google.android.gms.maps.MapView$zzb.zza(Unknown Source)
at com.google.android.gms.dynamic.zza.zza(Unknown Source)
at com.google.android.gms.dynamic.zza.onCreate(Unknown Source)
at com.google.android.gms.maps.MapView.onCreate(Unknown Source)
at net.xconsulting.fairtrak.activity.NotesActivity.onCreate(NotesActivity.java:70)
at android.app.Activity.performCreate(Activity.java:6270)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2500)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2613)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1469)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)
Код
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notes);
MapView mapView = findViewById(R.id.noteMap);
mapView.getMapAsync(this);
mapView.onCreate(savedInstanceState);
}
Макет
<com.google.android.gms.maps.MapView
android:id="@+id/noteMap"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Зависимости Gradle
dependencies {
implementation 'com.google.android.gms:play-services-maps:8.4.0'
//also tried implementation 'com.google.android.gms:play-services-maps:16.0.0'
}