我无法获取我的最后一个已知位置以返回并致电addMarker。就是说我的错误堆栈中未请求相应的API。这是一个很大的程序,所以我只把重要的部分放在这里:

public LatLng getLastKnownLocation() {
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    }
    Location lastLocation = FusedLocationApi.getLastLocation(client);
    return new LatLng(lastLocation.getLatitude(),lastLocation.getLongitude());

}


致电:

mMap.addMarker(newMarkerOptions().position(getLastKnownLocation()).title(memoryString));


我的错误:


  23126-23126 / com.example.kevin.memories E / Android运行时:致命异常:主要
                                                           流程:com.example.kevin.memories,PID:23126
                                                           java.lang.NullPointerException:未请求适当的Api。
                                                               在com.google.android.gms.common.internal.zzaa.zzb(未知来源)
                                                               位于com.google.android.gms.internal.zzof.zza(未知来源)
                                                               位于com.google.android.gms.location.LocationServices.zzi(未知来源)
                                                               位于com.google.android.gms.location.internal.zzd.getLastLocation(未知来源)
                                                               在com.example.kevin.memories.MapsActivity.getLastKnownLocation(MapsActivity.java:134)
                                                               在com.example.kevin.memories.MapsActivity.onMapReady(MapsActivity.java:107)
                                                               com.google.android.gms.maps.SupportMapFragment $ zza $ 1.zza(未知来源)
                                                               com.google.android.gms.maps.internal.zzo $ zza.onTransact上(未知来源)
                                                               在android.os.Binder.transact(Binder.java:380)
                                                               在wv.a(:com.google.android.gms.DynamiteModulesB:82)
                                                               at maps.ag.t $ 5.run(来源不明)
                                                               在android.os.Handler.handleCallback(Handler.java:739)
                                                               在android.os.Handler.dispatchMessage(Handler.java:95)
                                                               在android.os.Looper.loop(Looper.java:145)
                                                               在android.app.ActivityThread.main(ActivityThread.java:5835)
                                                               在java.lang.reflect.Method.invoke(本机方法)
                                                               在java.lang.reflect.Method.invoke(Method.java:372)
                                                               在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1399)
                                                               在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
  23126-23745 / com.example.kevin.memories E / DynamiteModule:无法加载模块描述符类:找不到类“ com.google.android.gms.dynamite.descriptors.com.google.android.gms.google证书”。路径上的ModuleDescriptor”:DexPathList [[zip文件“ /data/app/com.example.kevin.memories-1/base.apk"],nativeLibraryDirectories=[/vendor/lib、/system/lib]]


我想念什么吗?

@Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    Toolbar toolbar = (Toolbar) findViewById(R.id.login_toolbar);
    toolbar.setTitle("Login");

    if (client == null) {
        GoogleApiClient client = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(LocationServices.API)
                .build();
        loginButtons();
    }
    loadMap();
}

最佳答案

我收到相同的日志错误here在我的情况下,GoogleApiClient没有返回null。获取最后一个非null的位置没有问题。我用烤面包验证了这一点。我唯一的问题是永远不会调用显示代码的标记。如果您的客户仍返回null,请查看我的实现。
这是为了获得最后的位置。日志错误本身的解决方案是downgrading 9.0.83 Google Play Services

关于java - 获取最后的位置不会返回位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37446887/

10-11 22:19
查看更多