2016-06-10 62 views
-1

我正在开发一个应用程序,其中仅使用GPS提供程序跟踪用户的位置(仅位置的设备模式)。因此,如果用户使用Wifi和数据将他的位置优先级设置为近似位置,则应用程序将无法按预期工作。因此,我需要通过编程方式检查用户对位置模式(高精度,大概位置或设备)的选择并显示适当的对话框。什么将是一个干净的方式来实现这一目标?如何以编程方式找出打开哪种模式的位置?

+0

看看答案在这里:http://stackoverflow.com/questions/30467850/monitoring-geofences-after-user-turns-location-service-off-and-on/30580898 –

+0

@DanielNugent我不想像广播接收机那样重量轻。我觉得凯伦的答案是要走的路。让我检查一下。 –

+0

链接的答案有你需要的代码,但也有很多其他的东西。我只是在这里发布了一个答案,只有你需要的代码.... –

回答

0

1,要检查提供商模式(GPS,网络,窖-ID)

LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 
//get currently used providers 
locationManager.getProviders(true); 

2,显示对话框

new AlertDialog.Builder(this). 
setTitle("Title"). 
setMessage("content"). 
show(); 
0

请注意,您的应用程序将两个GPS只工作模式也是高精度模式,因为两种设置均启用GPS。

为了检查GPS是否启用,这将做到这一点。

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

boolean isGpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 

if (!isGpsEnabled) { 
    //show your alert here 
}