Próbowałem wykonać reset do ustawień fabrycznych w systemie Android przy użyciu klasy RecoverySystem, ale dostaję błędy uprawnień, których nie mogę zastąpić, ponieważ są one uprawnieniami systemowymi. Chcę wiedzieć, czy istnieje inny sposób na przywrócenie ustawień fabrycznych?Resetowanie fabryczne Androida Programowo
Odpowiedz
Sugeruję, abyś wysłał użytkownika do właściwego działania ustawień i niech zrobią to sami.
Zobacz aktywność this tutorial i użyć ustawień android.provider.Settings.ACTION_PRIVACY_SETTINGS
trzeba użyć DeviceAdministration (API 2.2 lub wyżej)
DevicePolicyManager mDPM; mDPM.wipeData (0);
Patrz: http://developer.android.com/guide/topics/admin/device-admin.html
To działa na wielu różnych urządzeniach próbowałem. (więcej niż 20)
Context foreignContext = createPackageContext("com.android.settings", Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE);
Class<?> yourClass = foreignContext.getClassLoader().loadClass("com.android.settings.MasterClear");
Intent intent = new Intent(foreignContext, yourClass);
startActivity(intent);
Nie powinno to już działać od wersji Androida 3.0. Użyj interfejsu API administratora urządzenia, aby zażądać wyczyszczenia urządzenia. – CommonsWare
Zdarza się, że ZWOLNIONYCH aplikacji stron trzecich można to zrobić.
Na urządzeniach w liczbie 2.2+ (w tym najnowszej wersji 4.x) musiałbyś użyć DevicePolicyManager i dołączyć uprawnienia do AndroidManifest.xml. W przypadku starszych urządzeń można użyć obcego programu ładującego kontekst, jak opisano w innej odpowiedzi.
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
DevicePolicyManager mDPM;
ComponentName mDeviceAdmin;
Na Tworzenie określić wersję Androida tam dostać i uchwyt na obiektach
currentAPIVersion = Build.VERSION.SDK_INT;
if (currentAPIVersion >= android.os.Build.VERSION_CODES.FROYO) {
//2.2+
mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
mDeviceAdmin = new ComponentName(this, WipeDataReceiver.class);
}
Klasa WipeDataReceiver była klasa wdrożyć DeviceAdminReceiver, ale nie mają żadnych przesłonięcia lub aktualizacji kodu.
public static class WipeDataReceiver extends DeviceAdminReceiver {
}
Po wznowieniu, na początku konieczne będzie potwierdzenie przywrócenia ustawień fabrycznych. kiedy funkcja zwraca wynik, wykona wipeData. Jeśli jest to Froyo lub mniej, możesz przeskoczyć do czasu przywrócenia ustawień fabrycznych.
if (currentAPIVersion >= android.os.Build.VERSION_CODES.FROYO) {
// 2.2+
if (!mDPM.isAdminActive(mDeviceAdmin)) {
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdmin);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "Process will remove user installed applications, settings, wallpaper and sound settings. Are you sure you want to wipe device?");
startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN);
} else {
// device administrator, can do security operations
mDPM.wipeData(0);
}
} else {
// 2.1
try {
Context foreignContext = this.createPackageContext("com.android.settings", Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE);
Class<?> yourClass = foreignContext.getClassLoader().loadClass("com.android.settings.MasterClear");
Intent i = new Intent(foreignContext, yourClass);
this.startActivityForResult(i, REQUEST_CODE_ENABLE_ADMIN);
} catch (ClassNotFoundException e) {
}
}
@TapanHP, Możesz użyć dowolnego identyfikatora tylko do obsługi wywołania wyniku aktywności.
int REQUEST_CODE_ENABLE_ADMIN = 1234;
- 1. Fabryczne/abstrakcyjne zamieszanie fabryczne
- 2. Resetowanie aktywności Androida po zrobieniu zdjęcia (orientacja?)
- 3. Pobierz plik programowo na Androida
- 4. Ustaw programowo datę/czas Androida.
- 5. Resetowanie scenorysu na wylogowaniu
- 6. fabryczne do tworzenia klas generycznych
- 7. Fabryczne metody tworzenia zawsze statyczne?
- 8. Zmienne fabryczne REST parametrów kątowych
- 9. Resetowanie NSMutableArray
- 10. Resetowanie setTimeout
- 11. Programowo programowo resetuje iPhone'a do ustawień fabrycznych.
- 12. Uruchamianie domyślnego programu uruchamiającego Androida programowo
- 13. Testowanie fabryczne AngularJS w karmie z Jasmine
- 14. Statyczne metody fabryczne w efektywnej java
- 15. Resetowanie kolumn Poziomy MultiIndex
- 16. Ustawienia.settings Plik zachowuje resetowanie
- 17. Resetowanie formuły Homebrew
- 18. Resetowanie jądra ipython
- 19. Resetowanie szpiega Mockito
- 20. Resetowanie głównego CSS - wady?
- 21. Resetowanie stanu strumienia
- 22. Resetowanie przerwał zgrzyt, Scrapy
- 23. Resetowanie symulatora iPhone'a
- 24. Resetowanie właściwości powiększania d3
- 25. Resetowanie hasła ASP.NET - problemy bezpieczeństwa?
- 26. Serwer SQL - resetowanie pola tożsamości
- 27. Resetowanie właściwości z siatki właściwości
- 28. Resetowanie instancji singleton w Rubim
- 29. Resetowanie połączenia przy zresetowaniu sprężyny
Ręcznie? Dlaczego aplikacja * kiedykolwiek * potrzebuje uprawnień do przywrócenia ustawień fabrycznych? – kcoppock
Brzmi to naprawdę podejrzanie. Jeśli użytkownik chce przywrócić ustawienia fabryczne, może to zrobić samodzielnie. Te uprawnienia są tam z bardzo ważnego powodu. – Jems
Nie wspominając już, że gdyby tak zrobiła twoja aplikacja, to i tak by zniknęła po zresetowaniu ustawień fabrycznych ... – kcoppock