web-dev-qa-db-ja.com

プログラムでGPSをAndroidカップケーキで有効にする方法

現在、Android GPSで動作するアプリを作成しています。現時点では、GPSが有効になっているかどうかを確認できます。私の問題は、GPSを有効にしたいということです。アプリの起動時に無効になっています。

27
Chiwai Chan

できません。Android 1.5で始まります。できることのほとんどは、アクティビティをポップオープンして、ユーザーがオン/オフを切り替えることができるようにすることです。Android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGSこのアクティビティを開くインテントを作成します。

51
CommonsWare
if(!LocationManager.isProviderEnabled(Android.location.LocationManager.GPS_PROVIDER ))
{
    Intent myIntent = new Intent( Settings.ACTION_SECURITY_SETTINGS );
    startActivity(myIntent);
}
15
TS.xy

このメソッドコードはあなたのために役立ちます

private void turnGPSOnOff(){
  String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
  if(!provider.contains("gps")){
    final Intent poke = new Intent();
    poke.setClassName("com.Android.settings", "com.Android.settings.widget.SettingsAppWidgetProvider");
    poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
    poke.setData(Uri.parse("3")); 
    sendBroadcast(poke);
    //Toast.makeText(this, "Your GPS is Enabled",Toast.LENGTH_SHORT).show();
  }
}
6
Dwivedi Ji

次のものを使用できます。

try {
  Settings.Secure.setLocationProviderEnabled(getContentResolver(), LocationManager.GPS_PROVIDER, true);
} catch (Exception e) {
  logger.log(Log.ERROR, e, e.getMessage());
}

ただし、システム署名保護レベルがある場合にのみ機能します。したがって、実際に使用するには、独自の画像を作成する必要があります。

3
icyerasor

まず、位置情報サービスがすでにオンになっているかどうかを確認しますか?

位置情報サービスが有効かどうかを確認しています

public boolean isLocationServiceEnabled(){
    LocationManager locationManager = null;
    boolean gps_enabled= false,network_enabled = false;

    if(locationManager ==null)
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    try{
        gps_enabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    }catch(Exception ex){
        //do nothing...
    }

    try{
        network_enabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    }catch(Exception ex){
        //do nothing...
    }

    return gps_enabled || network_enabled;

}

次に、位置情報サービスが以前にオフにされていた場合、最後に開きます

  if (isLocationServiceEnabled())) {
          //DO what you need...
     } else {
          AlertDialog.Builder builder = new AlertDialog.Builder(this);
          builder.setMessage("Seems Like location service is off,   Enable this to show map")
      .setPositiveButton("YES", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
                             Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                                    startActivity(intent);
                                }
                            }).setNegativeButton("NO THANKS", null).create().show();
                }
1
yubaraj poudel

Play Servicesで Location Settings Dialog を使用して、ユーザーにワンクリックで位置情報サービス(必要な場合)を有効にするように求める必要があります。

0
Greg Ennis