访问位置服务时,Android 应用缺少状态栏图标
Posted
技术标签:
【中文标题】访问位置服务时,Android 应用缺少状态栏图标【英文标题】:Android app missing status bar icon when accessing location services 【发布时间】:2016-12-16 18:09:31 【问题描述】:好吧,这很奇怪,但我可能遗漏了一些显而易见的东西。我目前正在使用此功能访问用户位置:
public String[] getGeoCoords()
String[] geoCoords = new String[2];
String mprovider = locationManager.getBestProvider(criteria, false);
if (mprovider != null && !mprovider.equals(""))
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
return geoCoords;
Location loc = locationManager.getLastKnownLocation(mprovider);
if(loc== null)
loc = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (loc == null)
loc = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
if (loc == null)
loc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
geoCoords[0] = String.valueOf(loc.getLatitude());
geoCoords[1] = String.valueOf(loc.getLongitude());
return geoCoords;
这会按预期返回位置,但您通常在访问用户位置时获得的图标不会出现在状态栏中。
在我的清单中
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
有什么想法吗?
【问题讨论】:
尝试添加这个权限您正在访问 getLastKnownLocation()
,它直接返回最后一个可用位置,否则返回 null。
当您请求这样的位置更新时,您正在谈论的图标出现..
LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener()
@Override
public void onLocationChanged(Location location)
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
@Override
public void onProviderEnabled(String provider)
@Override
public void onProviderDisabled(String provider)
);
因此,当它搜索卫星时,它会显示 GPS 图标,当它找到一个 onLocationChanged(Location location)
时,将使用捕获的位置调用。
【讨论】:
啊,有道理!谢谢。以上是关于访问位置服务时,Android 应用缺少状态栏图标的主要内容,如果未能解决你的问题,请参考以下文章
在android应用程序中,调用onResume方法时清除状态栏中的小图标
当应用程序未在 Android 上运行时,使用 React Native 在状态栏上显示通知图标