我想检查设备位置的天气,但是当我单击按钮时,此代码行不起作用。 有两个活动,即第一活动和第二活动。代码和按钮在第二个活动中,仍然不起作用。它什么都不做。当我简单地登录到onLocation()-时,它可以工作,但是位置管理器或侦听器却不能。我认为上下文可能有问题,但不知道如何解决。 但是在单个活动中效果很好。请帮忙!
public void onLocation(View view){
locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
String latitude = String.format("%.2f",location.getLatitude());
String longitude = String.format("%.2f",location.getLongitude());
DownloadTask task = new DownloadTask();
String result = "";
try {
result = task.execute("https://api.openweathermap.org/data/2.5/weather?lat=" + latitude + "&lon=" + longitude + "&appid=c940e43a5462f3c3b228e3812b747b25").get();
} catch (Exception e) {
e.printStackTrace();
}
Log.i("location weather",result);
locationManager.removeUpdates(this);
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
};
if(ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED){
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
} else {
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},1);
}
}