2015-12-09 8 views
7

MainActivityのMainActivity.javaとHomeFragment.javaの2つのファイルがあります。MainActivityのHomeFragmentの関数を呼び出すと、電話機の位置情報サービスをオンにするように求められます。問題は、ユーザーがロケーション機能を既にオンにしていても、その機能が呼び出された場合でも問題です。 HomeFragmentの機能が起動された場所機能がオフになっている場合にのみ、そのようにすることができます。GPSが無効かどうかをチェックする方法

HomeFragment.java

public static void displayPromptForEnablingGPS(
     final Activity activity) 
{ 
    final AlertDialog.Builder builder = 
      new AlertDialog.Builder(activity); 
    final String action = Settings.ACTION_LOCATION_SOURCE_SETTINGS; 
    final String message = "Enable either GPS or any other location" 
      + " service to find current location. Click OK to go to" 
      + " location services settings to let you do so."; 


    builder.setMessage(message) 
      .setPositiveButton("OK", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface d, int id) { 
          activity.startActivity(new Intent(action)); 
          d.dismiss(); 
         } 
        }); 

    builder.create().show(); 
} 

MainActivity.java

public void showMainView() { 
    HomeFragment.displayPromptForEnablingGPS(this); 
} 

いただきありがとうございます:)

+2

まず結果を発見した場所サービスが有効になっている場合、あなたはこのようなコードを使用することができます確認するには

/question/843675 ​​/ how-do-i-find-out-of-the-gps-of-an-anroid-device-is-enabled – BooleanCheese

答えて

18

をあなたはこのようなもの使用することができます

final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
    // Call your Alert message 
} 

それはそのトリックを行う必要があります。

String locationProviders = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 
if (locationProviders == null || locationProviders.equals("")) { 
... 
startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)); 
} 

出典:http://stackoverflow.com: MarcusのポストがGoogleからのhere

+0

liquidsystemこの作業に感謝しますが、GPS_PROVIDERではなく、 「自分の場所へのアクセス」が有効であることを確認します。ユーザーが「ワイヤレスネットワークを使用する」ことができ、これも機能しているので質問しています。 –

+0

これはあなたの質問を提供する必要があります:https://scotthelme.co.uk/android-location-services/ – liquidsystem

+0

応答ありがとうが、私は "または"ステートメントを使用して終了: if(!manager.isProviderEnabled( LocationManager.GPS_PROVIDER)||!manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) –

関連する問題