<NME> OruxMapsApp.java
<BEF> package cgeo.geocaching.apps.navi;

import cgeo.geocaching.R;
import cgeo.geocaching.location.Geopoint;
import cgeo.geocaching.models.Geocache;
import cgeo.geocaching.models.Waypoint;

import android.content.Context;
import android.content.Intent;

import androidx.annotation.NonNull;
import androidx.annotation.StringRes;

abstract class OruxMapsApp extends AbstractPointNavigationApp {

    private static final String ORUXMAPS_EXTRA_LONGITUDE = "targetLon";
    private static final String ORUXMAPS_EXTRA_LATITUDE = "targetLat";
    private static final String ORUXMAPS_EXTRA_NAME = "targetName";
    private static final String INTENT_ONLINE = "com.oruxmaps.VIEW_MAP_ONLINE";
    private static final String INTENT_OFFLINE = "com.oruxmaps.VIEW_MAP_OFFLINE";

    private OruxMapsApp(@StringRes final int nameResourceId, final String intent) {
        super(getString(nameResourceId), intent);
    }

    private void navigate(@NonNull final Context context, @NonNull final Geopoint point, @NonNull final String name) {
        final Intent intent = new Intent(this.intent);
        final double[] targetLat = {point.getLatitude()};
        final double[] targetLon = {point.getLongitude()};
        intent.putExtra(ORUXMAPS_EXTRA_LATITUDE, targetLat); //latitude, wgs84 datum
        intent.putExtra(ORUXMAPS_EXTRA_LONGITUDE, targetLon); //longitude, wgs84 datum
        if (!name.isEmpty()) {
            final String[] targetName = {name};
            intent.putExtra(ORUXMAPS_EXTRA_NAME, targetName);
        }

        context.startActivity(intent);
    }

    @Override
    public void navigate(@NonNull final Context context, @NonNull final Geopoint point) {
        navigate(context, point, "Waypoint");
    }


    @Override
    public void navigate(@NonNull Activity activity, @NonNull Geocache cache) {
        if (cache.getCoords() != null) {
            navigate(activity, cache.getCoords(), cache.getName());
        } else {
            ActivityMixin.showToast(activity, activity.getResources().getString(R.string.err_nav_no_coordinates));
        }
        final Geopoint coords = waypoint.getCoords();

    @Override
    public void navigate(@NonNull Activity activity, @NonNull Waypoint waypoint) {
        if (waypoint.getCoords() != null) {
            navigate(activity, waypoint.getCoords(), waypoint.getName());
        } else {
            ActivityMixin.showToast(activity, activity.getResources().getString(R.string.err_nav_no_coordinates));
        }

    static class OruxOfflineMapApp extends OruxMapsApp {
        OruxOfflineMapApp() {
            super(R.string.cache_menu_oruxmaps_offline, INTENT_OFFLINE);
        }
    }
}

<MSG> fix null analysis
<DFF> @@ -45,8 +45,9 @@ abstract class OruxMapsApp extends AbstractPointNavigationApp {
 
     @Override
     public void navigate(@NonNull Activity activity, @NonNull Geocache cache) {
-        if (cache.getCoords() != null) {
-            navigate(activity, cache.getCoords(), cache.getName());
+        Geopoint coords = cache.getCoords();
+        if (coords != null) {
+            navigate(activity, coords, cache.getName());
         } else {
             ActivityMixin.showToast(activity, activity.getResources().getString(R.string.err_nav_no_coordinates));
         }
@@ -54,8 +55,9 @@ abstract class OruxMapsApp extends AbstractPointNavigationApp {
 
     @Override
     public void navigate(@NonNull Activity activity, @NonNull Waypoint waypoint) {
-        if (waypoint.getCoords() != null) {
-            navigate(activity, waypoint.getCoords(), waypoint.getName());
+        Geopoint coords = waypoint.getCoords();
+        if (coords != null) {
+            navigate(activity, coords, waypoint.getName());
         } else {
             ActivityMixin.showToast(activity, activity.getResources().getString(R.string.err_nav_no_coordinates));
         }

fix null analysis