ANDROID - Google地图 - 无法“返回位置”;如果陈述后
当我的位置为空时,我的应用程序关闭。我确定这是因为该位置返回null。我尝试使用Mock GPS代码并在代码通过“if(myLocation!= null)”时运行。我不能“返回我的位置”;之后的“if(myLocation == null)”ANDROID - Google地图 - 无法“返回位置”;如果陈述后
请帮忙。谢谢。
@Override
public void onMapReady(GoogleMap googleMap) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.INTERNET,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
}, 10);
}
return;
}
gMap = googleMap;
if(!gMap.isMyLocationEnabled())
gMap.setMyLocationEnabled(true);
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location myLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (myLocation == null) {
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
String provider = lm.getBestProvider(criteria, true);
myLocation = lm.getLastKnownLocation(provider);
}
如果我添加“return myLocation;”在 “如果(myLocation == NULL)”
它,因为你使用void类型的返回
public void onMapReady(GoogleMap googleMap)
使用的地区。
public Location onMapReady(GoogleMap googleMap)
公共无效onMapReady(GoogleMap的GoogleMap的)是一个抽象的“回调”使用方法,但我可以看到你想拥有返回一个位置OBJ的使用方法。有几种方法可以做。 一种是使用全局对象来存储,如返回的结果:
private Location location = null;
@Override
public void onMapReady(GoogleMap googleMap){
......
this.location = myLocation;
}
public void someMethodIUseLocation(){
//TO CALL this.location if need to use
}
只是取决于你如何想打电话来实现的方式是不同的
你好,我试过并返回这个错误。请参阅链接。 https://i.imgur.com/4hguC8r.png @CbL –
@SimoneWalter我更新了答案 – CbL
你的方法是无效的,这意味着它不会返回一个值回来。你已经设置了调用这个方法并传递一些东西给它,但是它不会返回一些东西。 –
只需创建一个函数并使用'myLocation'在该函数中执行任何你想做的事情 –
@PavneetSingh - onMapReady之外的函数? –