我在 android studio 中的位置有问题
Posted
技术标签:
【中文标题】我在 android studio 中的位置有问题【英文标题】:problem with my location in android studio 【发布时间】:2019-02-22 00:10:43 【问题描述】:大家晚上好,我想告诉你我的问题,所以我希望在我的 android 中的谷歌地图中出现指向我当前位置的按钮,但是当我在我的真实手机中尝试时(三星 SM-J730G android 7.0 api 24)小按钮没有出现(我没有在模拟器中尝试,因为我也不起作用)。所以我想知道是什么问题,请朋友们在这里帮助我,非常感谢您的帮助是代码:
public class MapFragment extends Fragment implements View.OnClickListener
private View rootView;
private MapView mapView;
private GoogleMap mMap;
private FloatingActionButton fab;
public MapFragment()
// Required empty public constructor
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
// Inflate the layout for this fragment
this.rootView = inflater.inflate(R.layout.fragment_map, container, false);
this.fab = (FloatingActionButton) rootView.findViewById(R.id.fab);
return rootView;
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)
this.fab.setOnClickListener(this);
this.mapView = (MapView) this.rootView.findViewById(R.id.map);
if (mapView != null)
this.mapView.onCreate(null);
this.mapView.onResume();
this.mapView.getMapAsync(new OnMapReadyCallback()
@Override
public void onMapReady(GoogleMap googleMap)
mMap = googleMap;
if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
return;
mMap.setMyLocationEnabled(true); //I DONT KNOW WHY IT DOES NOT WORK
);
super.onViewCreated(view, savedInstanceState);
哦,顺便说一句,我调试它和
if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
return; //is entrying here and i donw know why if i have the perssions in the manifest the accces_fine_location and acces_coarse_location
mMap.setMyLocationEnabled(true);
please somebody help me thanks you
【问题讨论】:
哦,顺便说一下我调试了它 【参考方案1】:你只检查了运行时权限,如果没有提供你没有请求权限。更新下面的代码和onRequestPermissionsResult
检查是否提供了权限设置mMap.setMyLocationEnabled(true);
从那里
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)
this.fab.setOnClickListener(this);
this.mapView = (MapView) this.rootView.findViewById(R.id.map);
if (mapView != null)
his.mapView.getMapAsync(new OnMapReadyCallback()
@Override
public void onMapReady(GoogleMap googleMap)
mMap = googleMap;
if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
ActivityCompat.requestPermissions(context, new String[]Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION, 101);
return;
mMap.setMyLocationEnabled(true); //I DONT KNOW WHY IT DOES NOT WORK
);
关于权限结果
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode == 101)
f (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
mMap.setMyLocationEnabled(true);
【讨论】:
【参考方案2】:此外,它有助于确保您在使用地图时始终启用 GPS。
【讨论】:
以上是关于我在 android studio 中的位置有问题的主要内容,如果未能解决你的问题,请参考以下文章