11

ロケーションにネットワーク プロバイダーを使用するアプリケーションがあります。アプリが起動するたびにisProviderEnabled()、LocationManager のメソッドを使用してネットワーク プロバイダーが有効になっているかどうかが確認されます。

false が返された場合は、ネットワーク プロバイダーを有効にしてアプリケーションを使用するようにユーザーに警告します。このロジックは非常にうまく機能していましたが、Google 認定以外のデバイスでは例外がいくつかありました (これらのデバイスには通常 Maps API がないため、問題にはなりません)。isProviderEnabled()最近、ICS と JellyBean エミュレーターの一部のデバイスで、有効になっていても 一貫して「false」が表示されます。

それ以来、Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED)) から返された文字列を使用して、「ネットワーク」が含まれているかどうかを確認するようになりました。これはハックですが、今のところ機能しています。メソッドが使えるようになりたいですisProviderEnabled()

誰もこの問題を見たことがありますか?

4

2 に答える 2

0

の API ドキュメントから: LocationManager.GPS_PROVIDER

このプロバイダーは、衛星を使用して位置を特定します。条件によっては、このプロバイダーが場所の修正を返すまでに時間がかかる場合があります。アクセス許可 ACCESS_FINE_LOCATION が必要です。

したがって、ACCESS_FINE_LOCATION を必要としない場合は、false が返されます。

于 2016-02-08T20:25:25.800 に答える