SORU
18 Ocak 2011, Salı


Nasıl veya programla Android GPS devre dışı bırakabilir miyim?

/Kapalı GPS programlama yoluylahas been discussed many times, ve cevap android kapatma hakkında soru hep aynı olduğunu biliyorum:

"/Gizlilik nedeniyle güvenlik için değil, ileriye doğru tercihler ekran konumu ve kullanıcı bunu devre dışı bırakmak/etkinleştirmek izin vermelisin."

Anlıyorum, ancak geçenlerde satın aldı Tasker pazar ve arasında birçok şey bu sen-ebilmek yapmak ile ayarlayabilirsiniz kuralları için otomatik etkinleştir GPS girmeden önceden belirlenmiş uygulamaları ve devre dışı bırakmak üzerine çıkmak (bkz here öğretici nasıl, ve çok işe yarıyor!) ve bu uygulama birçok android sürümleri ve farklı cihazlarda çalışır gibi ürün yazılımı imzalama anahtarı ile imzalanmış ve daha köklü olması gerekmez.

Benim app bunu yapmak istiyorum. Tabii ki, istemiyorum havaya kullanıcıları gizlilik, yani ben ilk ask kullanıcının istiyorsa açma ile otomatik olarak normal "olduğunu karar" checkbox ve eğer cevap evet, etkinleştirin.

Kimseye Tasker bu elde nasıl herhangi bir fikir ya da ipucu var mı?

CEVAP
14 Mart 2011, PAZARTESİ


GPS exploiting güç yöneticisi widget bir böcek tarafından değiştirilebilir. tartışma bu xda thread bkz.

İşte bazı örnek kod kullanın

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);
    }
}

aşağıdaki güç kontrol widget mevcut sürümü gps geçiş için izin verecek biri olup olmadığını test etmek için kullanın.

private boolean canToggleGPS() {
    PackageManager pacman = getPackageManager();
    PackageInfo pacInfo = null;

    try {
        pacInfo = pacman.getPackageInfo("com.android.settings", PackageManager.GET_RECEIVERS);
    } catch (NameNotFoundException e) {
        return false; //package not found
    }

    if(pacInfo != null){
        for(ActivityInfo actInfo : pacInfo.receivers){
            //test if recevier is exported. if so, we can toggle GPS.
            if(actInfo.name.equals("com.android.settings.widget.SettingsAppWidgetProvider") && actInfo.exported){
                return true;
            }
        }
    }

    return false; //default
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Sergio Fernandez

    Sergio Ferna

    1 EKİM 2009
  • SRI International

    SRI Internat

    30 NİSAN 2008
  • Watcher3223

    Watcher3223

    15 Kasım 2007