猛禽洛的程式筆記庫

[Android] 偵測位置資訊(定位)功能是否有開啟

在製作定位功能時,遇到了一種情況:

當使用者有提供位置權限後,還是抓不到位置

結果原來是根本沒有開啟位置(定位)功能

這邊可以偵測使用者是否有開啟位置資訊功能,若無,就引導他去設定畫面

1.在AndroidManifest.xml中加入權限

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

2.使用LocationManager來偵測位置開啟狀態

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
//檢查位置功能是否有開啟
if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
  //位置功能有開啟,可以開始抓取經緯度等功能
  startLocationService();
}else{//引導到開啟位置頁面
  Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
  startActivityForResult(intent, 100);
}

3.在onActivityResult接收頁面返回的事件

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(requestCode == REQUEST_LOCATION){
    //可以在這邊再次判斷是否有開啟位置功能
    //或是直接執行定位程式碼部分
    startLocationService();
  }
}

-END-

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *