2010-07-26 10 views
7

Używam podobnego codesnippet jak pokazano poniżej, aby dodać skrót do aplikacji na ekranie głównym:Aplikacja nie zostanie usunięty z ekranu głównego podczas odinstalowywania Android App

Intent shortcutIntent = new Intent(Intent.ACTION_MAIN); 
    shortcutIntent.setClassName(this, this.getClass().getName()); 
    shortcutIntent.putExtra(EXTRA_KEY, "ApiDemos Provided This Shortcut"); 

    // Then, set up the container intent (the response to the caller) 

    Intent intent = new Intent(); 
    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 
    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.shortcut_name)); 
    Parcelable iconResource = Intent.ShortcutIconResource.fromContext(
      this, R.drawable.app_sample_code); 
    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource); 

    // Now, return the result to the launcher 

    setResult(RESULT_OK, intent); 

nie ma problemu z utworzeniem skrótu , ale po odinstalowaniu aplikacji skrót pozostaje na ekranie głównym. Podczas odinstalowywania innych aplikacji wszystkie wydają się również usuwać swoje odpowiednie skróty ekranu głównego. To jest to, co staram się osiągnąć za pomocą mojej "stworzonej przez kod-ikony-skrótu"

Czy któryś z was, ekspertów Androida tutaj na Stackoverflow wie, co jest potrzebne, aby usunąć skrót aplikacji z ekranu głównego po odinstalowaniu aplikacji ?

znalazłem kilka podobnych tematów, ale oni nie dają mi rozwiązanie mojego problemu, ale prosimy, aby nadrobić zaległości:

[0] https://developer.android.com/intl/de/resources/samples/ApiDemos/src/com/example/android/apis/app/LauncherShortcuts.html

[1] Remove application from launcher programatically in Android

[2] How to remove application shortcut from home screen on uninstall automatically?

+1

"Podczas odinstalowywania innych aplikacji wszystkie wydają się również usuwać swoje odpowiednie skróty ekranu głównego." - czy możesz zacytować? AFAIK, to nawet nie jest możliwe. @ me back, jeśli masz konkretny przykład, który działa w ten sposób. – CommonsWare

+3

Aplikacje mogą odinstalować swoje skróty, jeśli sobie tego życzą, istnieje na to pozwolenie/zamiar (mogą również instalować skróty). Jednak odinstalowanie aplikacji powinno automatycznie oczyścić skróty. Może to być błąd w dowolnej wersji Androida/Launchera. –

+1

@CommonsWare Przykład: Menedżer plików ASTRO ma opcję wewnątrz aplikacji, aby dodać skróty do ekranu głównego. Jeśli zdecydujesz się to zrobić, a następnie odinstalować aplikację ASTRO. Skróty ekranu głównego są również usuwane. (Korzystanie z HTC Desire 2.1-u1) –

Odpowiedz

4

Myślę, że można spróbować umieścić tę akcję w drugim zamiar: „com.android.launcher.action.INSTALL_SHORTCUT”

Działa to dla mnie ikona wyrzutnia zostanie zainstalowany na ekranie głównym, a kiedy odinstaluj aplikację, ikona jest usuwana. Od pewnego czasu walczyłem z tym.

Intent shortcutIntent = new Intent(Intent.ACTION_MAIN); 
shortcutIntent.setClassName(this, this.getClass().getName()); 

Intent intent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); 
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name)); 
Parcelable iconResource = Intent.ShortcutIconResource.fromContext(
      this, R.drawable.launcher_icon); 
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource); 
sendBroadcast(intent); 

Mam nadzieję, że to pomoże.

2

Miałem ten sam problem, jak również.

W końcu doszedłem do wniosku, że podczas tworzenia skrótu aplikacji intencja aplikacji musi zawierać akcję Intent.ACTION_MAIN, w przeciwnym razie skrót nie zostanie usunięty z ekranu głównego po odinstalowaniu aplikacji (a nie intencji używanej do instalowania aplikacji). skrót, który ma działanie com.android.launcher.action.INSTALL_SHORTCUT).

Mam nadzieję, że to pomaga.

+1

Aplikacja zawsze miała akcję "android.intent.action.MAIN" jako filtr zamiaru. Więc to nie była sztuczka dla mnie. Ale thx. –

Powiązane problemy