私のアプリは、有効になっている Wi-Fi/3G を介してユーザーの位置情報を取得しますが、電話の設定には、アプリケーションが位置情報を取得できないように無効にするオプションがあります。
私の質問は、場所を取得しようとする前に、これが有効/無効になっているかどうかを確認するにはどうすればよいですか?
現在私は使用しています:
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
String provider = LocationCall.getBestProvider(criteria, true);
if (provider == null) {
//No internet connection available OR location services has been turned off
}
これは機能しますが、位置情報を取得できない理由をユーザーに正確に伝えることができるようにしたいと考えています。
解決:
String provider = LocationCall.getBestProvider(criteria, true);
if ("gps".equals(provider) || provider == null) {
Toast.makeText(getApplicationContext(), "Use Wireless Networks has been disabled in location settings", Toast.LENGTH_LONG).show();
}
プロバイダーが gps のみに等しいか null の場合、ユーザーはアプリケーションを無効にして、ネットワーク経由で自分の位置を取得しています。