1

ロケーションプロバイダーのオンとオフ、つまりGPSとワイヤレスロケーションを切り替えたい

マニフェストに許可を追加しました

ワイヤレスロケーション設定を変更する私のコードは...

Settings.Secure.setLocationProviderEnabled(context.getContentResolver(), provider, true);

このコードを実行するたびにlogcatにエラーが表示されます

logcat出力

Caused by: java.lang.SecurityException: Permission denial: writing to secure settings requires android.permission.WRITE_SECURE_SETTINGS

私はこれについて検索しました、多くの人が言います

WRITE_SECURE_SETTINGS パーミッションは、ファームウェアの一部ではないアプリでは利用できません

本当ですか? はいの場合、これを達成するために他の方法が必要です。

いいえの場合、これを使用する方法、私のコードに間違いはありますか...

前もって感謝します

*注: *別のクラス ファイルでこのメソッドを定義し、これを SERVICE から呼び出します。

4

1 に答える 1

0

AndroidSettings.Secure.setLocationProviderEnabledでは、他のアプリケーションから設定を直接呼び出すことはできません。そのため、次の方法でgpsを確認または有効にしてください。

private void isGPSEnable() {
        String str = Settings.Secure.getString(getContentResolver(),
                Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
        Log.v("GPS", str);
        if (str != null) {
            return str.contains("gps");
        }
        else{
            return false;
        }
    }

GPSを有効/無効にするための:

private void turnGPSOnoff(){
     try
     {
     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"));  //SET 3 for gps,3 for bluthooth
         sendBroadcast(poke);
     }
     }
     catch(Exception e)
     {
      Log.d("Location", " exception thrown in enabling GPS "+e);
     }
 }
于 2012-06-29T07:59:16.920 に答える