2012-02-17 14 views
7

Czy istnieje sposób ustalenia, czy określony skrót ekranu głównego istnieje?Jak ustalić, czy istnieje skrót ekranu głównego?

Moja aplikacja instaluje skrót na ekranie głównym w urządzeniu przy uruchomieniu urządzenia pod pewnymi warunkami i nie chcę, aby pojawiały się powielone skróty . Nie chcę również, aby pojawiły się komunikaty Toast mówiące "Utworzony skrót" lub "Skrót już istnieje" za każdym razem, gdy uruchamiane jest urządzenie . Znalazłem nieudokumentowane narzędzie Intent Extra o nazwie EXTRA_SHORTCUT_DUPLICATE, które zapobiega instalowaniu zduplikowanych skrótów z , ale program uruchamiający nadal wyświetla "Skrót już istnieje" Komunikat Toast. Wolałbym nie polegać na tym nieudokumentowanym Intent Extra, jeśli jest na to obsługiwana technika.

+1

+1 na to pytanie, zadałem podobny jeden: http://stackoverflow.com/questions/9452121/install-launcher-icon-in-home-screen-once. Naprawdę chciałbym zainstalować skrót, gdy aplikacja jest instalowana przez użytkownika, lub gdy użytkownik aktywnie wybiera z okna podręcznego dostępnego w aplikacji. – Wytze

Odpowiedz

0

nie jest tak uciążliwy? Dlaczego po prostu nie dodać go tylko raz i pozwolić użytkownikowi zdecydować, czy chce go zachować, czy nie?

+1

Zgadzam się, dodanie skrótu tylko raz to więcej niż wystarczające. Myślę, że Asfman ma ten sam pomysł i podobnie jak ja może znaleźć kod, w którym ikona jest zainstalowana w zdarzeniu onCreate (tj. Za każdym razem, gdy aplikacja jest uruchamiana). – Wytze

+0

OP chce mieć możliwość ustalenia, czy już tam jest! "Wystarczy, że dodasz go raz", nadal da ci tokena "Skrót już istnieje", jeśli użytkownik umieści to tam ** bofor ** uruchamia aplikację. Najmądrzejszą rzeczą do zrobienia w tym przypadku jest sprawdzenie, czy jest już skrót, a jeśli nie, to możesz go automatycznie dodać (lub zapytać użytkownika, czy chce go dodać). I nie, nie jest nachalny. –

+0

nowsze wersje systemu Android automatycznie dodadzą skróty do programu uruchamiającego po zainstalowaniu aplikacji. Jeśli usunę ten skrót, uruchom aplikację, a skrót powróci, będzie to wymagało ode mnie usunięcia. Jeśli doda skrót za każdym razem, gdy używam aplikacji (ponieważ wciąż ją usuwam), przestanę korzystać z aplikacji. Pozwól użytkownikom kontrolować program uruchamiający i ekran główny, nie próbuj kontrolować go za pomocą aplikacji. Intruzi próbować modyfikować inne działania, a piaskownica zapobiega temu z bardzo dobrego powodu. – edthethird

0

Gdy aplikacja tworzy skrót, ustaw "true" dla logiki Boolean i zapisz ją w pamięci (na przykład mały plik lub sharedpreferences). I sprawdź wartość, gdy Twoja aplikacja próbuje utworzyć skrót.

+0

Dzięki temu dowiesz się tylko, czy aplikacja utworzyła skrót. Nie powie ci, czy użytkownik umieścił skrót na ekranie głównym, ani nie powie Ci, czy użytkownik usunął skrót z ekranu głównego. –

-1
**// Checking if ShortCut was already added 
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
     boolean shortCutWasAlreadyAdded = sharedPreferences.getBoolean("PREF_KEY_SHORTCUT_ADDED", false); 
     if (shortCutWasAlreadyAdded) return; 
     Intent shortcutIntent = new Intent(getApplicationContext(), MainActivity.class); 
     shortcutIntent.setAction(Intent.ACTION_MAIN); 
     Intent addIntent = new Intent(); 
     addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 
     addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "SBM"); 
     addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.ic_launcher)); 
     addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); 
     sendBroadcast(addIntent); 
     // Remembering that ShortCut was already added 
     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     editor.putBoolean("PREF_KEY_SHORTCUT_ADDED", true); 
     editor.commit();** 
Powiązane problemy