2

現在の位置を取得するために閉じているときに Android で gps を開く方法。私は2つの方法をテストします

private void turnGPSOn(){
    String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);

    if(!provider.contains("gps")){ //if gps is disabled
        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);
    }
}

private void turnGPSOff(){
    String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);

    if(provider.contains("gps")){ //if gps is enabled
        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);
    }
}

そしてこの方法

enaABLE GPS:
Intent intent=new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", true);
sendBroadcast(intent);
DISABLE GPS:

Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", false);
sendBroadcast(intent);

ただし、これらの方法のいずれかで gps を開くと、コード回復位置が実行され、表示されます

    Toast.makeText(LbsGeocodingActivity.this,
            "Provider disabled by the user. GPS turned off",
            Toast.LENGTH_LONG).show();
4

2 に答える 2

11

ユーザーに対して GPS を有効にすることはできません。できることは、GPS が無効になっている場合は、GPS を有効にするように求めるメッセージをユーザーに表示し、GPS を有効にする設定に送信することです。

このコードで:

Intent gpsOptionsIntent = new Intent(  
    android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);  
startActivity(gpsOptionsIntent);

これは、それを行う方法に関するより詳細なコードです

http://java-blog.kbsbng.com/2012/08/displaying-dialog-in-android-to-prompt.html

場所を取得するには、これを行います

    locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

  /*try to see if the location stored on android is close enough for you,and avoid rerequesting the location*/
    Location location =  locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

    if (location == null
            || location.getTime()
                    - Calendar.getInstance().getTimeInMillis() > MAX_LAST_LOCATION_TIME)
    {

        locationManager.requestLocationUpdates(
                LocationManager.GPS_PROVIDER, TIME_INTERVAL, LOCATION_INTERVAL, yourLocationListener);

    }
    else
    {
        //do your handling if the last known location stored on android is enouh for you
    }

yourLocationListener では、場所を取得したときに何をするかを実装します

于 2013-04-28T12:42:14.637 に答える
0

コードから GPS を有効にするのは不適切です。あなたはそれをすることはできません。

以前は、特別な権限を持たないアプリで GPS をオンにするエクスプロイトがありました。そのエクスプロイトは、2.3 の時点で (ほとんどの ROM で) 存在しなくなりました。

于 2013-04-28T12:43:04.290 に答える