Java 用户启用位置使用后位置仍为空
当我试图获取用户的最后一个已知位置时,在用户同意应用程序使用他自己的位置之后,我发现该位置仍然为空 这是我的密码:Java 用户启用位置使用后位置仍为空,java,android,location,android-gps,Java,Android,Location,Android Gps,当我试图获取用户的最后一个已知位置时,在用户同意应用程序使用他自己的位置之后,我发现该位置仍然为空 这是我的密码: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode){
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode){
case REQUEST_LOCATION:
switch (resultCode){
case Activity.RESULT_OK: {
getLastKnowLocation();
break;
}
case Activity.RESULT_CANCELED:{
Toast.makeText(MyActivity.this, "Location not enabled.", Toast.LENGTH_LONG).show();
break;
}
default:{
break;
}
}
}
}
protected void getLastKnowLocation() {
if (checkPermission(FINE_LOCATION) == DENIDED) {
requestPermissionLocation(OBTAINGLASTKNOWLOCATION_REQUESTCODE);
return;
}
flpc.getLastLocation().addOnSuccessListener(new OnSuccessListener<Location>() {
@Override
public void onSuccess(final Location location) {
if (location != null && onSuccessListener != null) onSuccessListener.onSuccess(location);
else {
displayLocationSettingsRequest(onSuccessListener);
}
}
});
}
@覆盖
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
开关(请求代码){
案例请求位置:
开关(结果代码){
案例活动。结果\u正常:{
getLastKnowLocation();
打破
}
案例活动.RESULT\u已取消:{
Toast.makeText(MyActivity.this,“位置未启用”,Toast.LENGTH_LONG.show();
打破
}
默认值:{
打破
}
}
}
}
受保护的无效getLastKnowLocation(){
if(检查许可(罚款位置)=拒绝){
requestPermissionLocation(获取GlastKnowLocation\u REQUESTCODE);
返回;
}
flpc.getLastLocation().addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时的公共无效(最终位置){
如果(location!=null&&onSuccessListener!=null)onSuccessListener.onSuccess(location);
否则{
displayLocationSettingsRequest(onSuccessListener);
}
}
});
}
还有什么方法可以强制应用程序获取用户的位置?
顺便说一句,我在这里没有使用任何地图。你在requestPermissionLocation(获取GlastKnowLocation\u REQUESTCODE)方法中做了什么?我只是请求用户允许应用程序访问他的位置信息GetLastKnowLocation可以始终返回null。位置启用并不意味着手机正在积极跟踪它。如果必须获取位置,请使用requestSingleUpdate。getLaskKnownLocation是一种仅用于快速结果的优化,不应依赖它。@GustavoOliveira,您是否实现了onRequestPermissionsResult方法?@ShubhamRaitka我没有,但它与访问位置信息的权限无关。这可能发生在用户给予许可后,由于某种原因,他决定不再使用他的位置,例如,他的智能手机可能电池电量不足。