MapView NullPointerException в onCreate только с новейшими сервисами GooglePlayServices - PullRequest
0 голосов
/ 11 октября 2018

Я поддерживаю приложение, использующее MapView, и недавно я получаю исключения NullPointerException при попытке вызвать метод onCreate () MapView.Как ни странно, это происходит только в новых версиях Сервисов Google Play.Когда я возвращаю версию к заводским настройкам по умолчанию, MapView работает без помех.То есть работает на 9.8.79, а не на 14.3.66.Изменение версии Play Services на всех производственных контроллерах невозможно.

Что я пробовал

  1. Проверка ключа API: не проблема.В любом случае этого не могло быть, так как он не работал бы и с более старой версией Play Services.
  2. Обновление зависимости play-services-maps с 8.4.0 (по умолчанию от старых дней) до 16.0.0, Самый последний.Хотя это очищает исключение, MapView никогда не удается завершить инициализацию.Все, что он делает - это отображает черное пространство с текстом «Сервисы Google Play обновляются», несмотря на то, что оно было обновлено до 14.3.66.
  3. Предварительная инициализация с помощью MapsInitializer.initialize ();В этом не должно быть необходимости, поскольку документы говорят, что getMapAsync () делает это автоматически, но я все равно попробовал.Никаких изменений в поведении.
  4. Проверено расположение файлов.Я действительно надеялся, что это как-то проблема, но 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'
}
...