Cześć, próbuję utworzyć aplikację, aby zmienić program uruchamiający na urządzeniu z Androidem za pomocą następującej funkcji:
private void changeLauncher() {
getPackageManager().clearPackagePreferredActivities(getPackageName());
Intent selector = new Intent("android.intent.action.MAIN");
selector.addCategory("android.intent.category.HOME");
selector.setComponent(new ComponentName("android", "com.android.internal.app.ResolverActivity"));
startActivity(selector);
}
Działa na wszystkich urządzeniach z Androidem, ale wymusza zamykanie na LG G3 z Androidem 5.0. Działa to jednak z innym urządzeniem z Androidem 5.0 (Asus K19 Fonepad). Co mogę zrobić, aby to rozwiązać?
Odpowiedzi:
0 dla odpowiedzi № 1Zmień metodę na:
private void changeLauncher() {
getPackageManager().clearPackagePreferredActivities(getPackageName());
Intent selector = new Intent(Intent.ACTION_MAIN);
selector.addCategory(Intent.CATEGORY_HOME);
startActivity(selector);
}
Wygląda na to, że próbujesz uruchomić działanie selektora bezpośrednio, zamiast określać opcję Intent
i pozwolenie Androidowi wypełnić samą listę działań, co jest poprawnym użyciem resolvera.