Po wybraniu opcji startActivity()
z wybieraczem, Android wyświetli listę wszystkich aplikacji uprawnionych do obsługi Twojego Intent
wraz z opcjami ustawiania tego przypisania na stałe lub jednorazowe (w ICS jego "Zawsze "i" Tylko raz "przycisk akcji, na 2.x to pole wyboru). Jednak na ten kod:Nie można ustawić funkcji startActivity() za pomocą opcji Chooser zadając tylko jeden raz dla każdej aplikacji.
public class Redirector {
public static void showActivityWithChooser(Context context, int chooserLabelTitleId, Intent intent) {
try {
context.startActivity(Intent.createChooser(intent,
context.getResources().getString(chooserLabelTitleId)));
} catch(Exception e) {
e.printStackTrace();
}
}
public static void viewInExternalApplication(Context context, String url) {
Intent intent = new Intent( Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
showActivityWithChooser(context, R.string.open_chooser_title, intent);
}
}
widzę żadnego „Zawsze | tylko raz” przycisków i nie może zrobić mój wybór stałe (mam tylko aplikacje wymienione i może strzelać każdy dotykając go). Jakie elementy, które przeoczyłem, sprawiły, że Android nie był w stanie uporać się z wyborem użytkownika?
Zobacz fotki: left dialogowe, co chciałbym zobaczyć, ale prawda jest to, co mam teraz (różna liczba wniosków w obu oknach nie ma znaczenia):
'Zawsze" oznacza, że wybór jest stały. Twoja aplikacja nie ma możliwości kontrolowania tego okna, jego części systemu Android bezpośrednio. – mah
@mah: Tęskniłeś za sednem. –
Rzeczywiście tak zrobiłem. Jednak druga połowa mojego komentarza się zgadza; nie jest to okno dialogowe, które można kontrolować za pomocą aplikacji. Problem polega na tym, że wywołujesz program showActivityWithChooser, który nie ma na celu umożliwienia użytkownikowi zmiany jego wartości domyślnej, ale ma na celu zmusić użytkownika do wyboru. – mah