5

isProviderEnabled() を使用して、GPS がオンになっているかどうかを確認できます。オンになっていない場合は、ユーザーが GPS を有効にできるようにインテントを起動しています。最後に、ユーザーが GPS を有効にしているかどうかを再度確認しています。ユーザーが GPS を有効にしていない場合でも、isProviderEnabled() は NULL を返します。問題は何ですか?私を案内してください。

    String provider = LocationManager.GPS_PROVIDER;
    // Check if GPS is enabled
    boolean enabled = myLocationManager.isProviderEnabled(provider);

    if (!enabled) {
                    // GPS not enabled
        Log.d("", "Provider " + provider + " is not enabled");
        Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
        startActivity(intent);
                    // Consider the case when user does not enable GPS and come out. 
    } else {
        Log.d("", "Provider is enabled");

    }       

            // Re-check if user has enabled or not. (Note: case: user has not enabled GPS)
    enabled = myLocationManager.isProviderEnabled(provider);
    if(!enabled)
    {

        Log.d("","provider not enabled");
    }
            else
            {
                    // Control is coming here though user has not enabled GPS in settings
                    Log.d("","GPS is enabled");
            }

ありがとう、ビプラブ

4

3 に答える 3

8

このコードを使用して GPS が有効になっていることを確認し、何が起こるか教えてください。

private void CheckEnableGPS(){
    String provider = Settings.Secure.getString(getContentResolver(),
      Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
       if(!provider.equals("")){
           //GPS Enabled
        Toast.makeText(AndroidEnableGPS.this, "GPS Enabled: " + provider,
          Toast.LENGTH_LONG).show();
       }else{
        Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS);
           startActivity(intent);
       }   
   }
于 2012-04-12T05:12:12.187 に答える
8

実際の物理デバイスでこの問題が発生しました。

物理的な Android デバイスでモックの場所を使用していくつかのテストを行った後、GPS を使用して実際の場所に切り替えました (コードにはすべてのモックの場所が含まれていません)。この時点で、GPS が停止されているかどうかに関係なく、アプリケーションは常に「true」(GPS がアクティブ) を返し、何らかの理由で実際の場所を登録しなくなりました。

この場合、物理デバイスを再起動すると問題が解決しました。

于 2014-05-31T21:19:44.937 に答える