如何解决无法在我的天气中获取当前位置 App.getlatitude() 和 getlongitude() 不起作用
安卓 在我的天气应用程序中,我无法获取当前位置并访问其温度。我认为 api 没有问题,因为我的天气应用程序在输入城市名称和搜索天气时运行良好。但是该应用程序没有显示我当前位置的天气。我还发现 Onprovider 禁用的 Toast 消息正在显示。
private void getWeatherForCurrentLocation() {
mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mLocationListner = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
String Latitude = String.valueOf(location.getLatitude());
String Longitude = String.valueOf(location.getLongitude());
Log.e("state",Latitude);
RequestParams params =new RequestParams();
params.put("lat",Latitude);
params.put("lon",Longitude);
params.put("appid",api);
letsdoSomeNetworking(params);
}
@Override
public void onStatusChanged(String provider,int status,Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderdisabled(String provider) {
// Toast.makeText(MainActivity.this,"can not get",Toast.LENGTH_SHORT).show();
}
};
if (ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// Todo: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions,and then overriding
// public void onRequestPermissionsResult(int requestCode,String[] permissions,// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},REQUEST_CODE);
return;
}
mLocationManager.requestLocationUpdates(Location_Provider,MIN_TIME,MIN_disTANCE,mLocationListner);
}
@Override
public void onRequestPermissionsResult(int requestCode,@NonNull String[] permissions,@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode,permissions,grantResults);
if(requestCode==REQUEST_CODE)
{
if(grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED)
{
Toast.makeText(MainActivity.this,"Location get Succesffully",Toast.LENGTH_SHORT).show();
getWeatherForCurrentLocation();
}
else
{
//user denied the permission
}
}
}
解决方法
自从我上次使用 android studio 已经有很长时间了,但我记得你必须给 permession 使用提供程序。您必须在应用程序标记的 manifest.xml 中插入这一行。 如果此后它不起作用,请检查此https://developer.android.com/guide/topics/manifest/provider-element 希望有用,我不太记得了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。