2016-11-07 56 views
0

我讀過Google docpost,值得注意的是@ bendaf的回答,關於管理位置設置,以及一切正常。如何獲知位置設置已更改?

無論如何,如果用戶首先決定不使用自己的位置,然後再決定激活它,應用程序不會被此操作觸發,所以我不知道我可以請求定期更新。

我在這裏錯過了什麼?

回答

0

每次用戶啓動應用程序時都可以提供AlertDialog,以便用戶可以啓用該位置。但是這會讓人有點討厭,因爲每次你必須否認同樣的事情。

或者,你可以使用偏好,以便用戶可以啓用/禁用位置

+0

也許我沒有清楚地說明問題。考慮用戶啓動應用程序。我問他啓用GPS,他回答不。稍後在使用應用程序時,他意識到他想使用他的位置,然後進入設置並啓用GPS。我的應用程序不知道這個新的設置。除非我創建一個線程來拉取'isGPSEnabled()'。 – 2ndGAB

+0

是的,你可以做到這一點。或者你也可以創建一個循環:while(isRunning){boolean b = isGPSEnabled();如果(b){//您的代碼}}在同一個線程上。 – hittsss

+0

在一個事件驅動的系統中使用拉線,聽起來很奇怪...... – 2ndGAB

0

還有一種更好的方式來做到這一點。使用位置監聽器。這是爲了你想達到的唯一目的。

public class XYZ Activity implements LocationListener{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,10,this); 
} 


@Override 
public void onLocationChanged(Location location) { 
} 

@Override 
public void onStatusChanged(String s, int i, Bundle bundle) { 
} 

@Override 
public void onProviderEnabled(String s) { 

} 

@Override 
public void onProviderDisabled(String s) { 

} 
} 

我認爲這是你正在尋找的正確的東西。這是事件的方式。 快樂編碼:)

+0

我已經實現了所有這些,我希望''onStatusChanged()'在這種情況下被調用,但沒有。 – 2ndGAB

+0

try lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,0,this); – hittsss

+0

不,我懷疑它不會導致任何事情,如果isProviderEnabled()'返回false。 – 2ndGAB