4

Мне нужно удалить один конкретный (лучший) или все ярлыки (худший случай), указывающие на мое приложение с пусковой установки запаса. Мне не удалось использовать трансляцию UNINSTALL_SHORTCUT, похоже, что она просто не работает (проблема с simillar до this.Удалить ярлык, указывающий на мое приложение, с пусковой установки в ics

Мое приложение подписано системным сертификатом (оно будет установлено в/system/app), поэтому у меня есть некоторые идеи, как удалять ярлыки.

  1. есть ли рабочий способ использовать UNINSTALL_SHORTCUT в мике?

  2. Я видел, что акции пусковая удаляет все ссылки, указывающие на мое приложение, когда я удалить его. есть ли способ имитировать деинсталляцию (или отправить broadcast_removed broadcast, имеющую системные привилегии), возможно, написать часть менеджера пакетов?

  3. Если 2 невозможно, можно ли каким-либо образом заставить диспетчер пакетов отправлять PACKAGE_REMOVED трансляцию, переустанавливая/обновляя мое приложение? (Я могу устанавливать/обновлять приложения без проблем, потому что у меня есть системные привилегии с разрешением INSTALL_PACKAGES).

ответ

4

Я считаю, что у вас будет еще один способ запустить ваше приложение, кроме того, из ярлыка.

Чтобы не показывать на приложение ящик, просто удалите

 <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

из манифеста вашей деятельности, и он не будет показан ярлыку

UPDATE: можно разделить ярлыки в другом приложении/apk и установить ярлык «приложение», когда вам понадобится ярлык и удалить, когда это не нужно.

+1

нет! Мне нужны ярлыки! Просто из-за концепции всего приложения. – POMATu

+3

Это не имеет никакого смысла. Вы говорите, что хотите удалить ярлыки, но вам также необходимо сохранить ярлыки. WTF? – kcoppock

+1

Мне нужно удалить их с главного экрана. Затем я добавлю другие на главный экран – POMATu

2

Кажется, UNINSTALL_SHORTCUT не работает с EXTRA_SHORTCUT_NAME, у которого есть пробел.

попробуйте удалить ключ пространства из EXTRA_SHORTCUT_NAME.

Это работает для меня:

private void deleteShortCut(Context context) { 

    Intent shortcutIntent = new Intent(Intent.ACTION_MAIN); 
    shortcutIntent.setClassName("com.example.androidapp", "SampleIntent"); 
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    shortcutIntent.putExtra("someParameter", "HelloWorld"); 

    Intent removeIntent = new Intent(); 
    removeIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 
    removeIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "ShortcutName"); 
    removeIntent.putExtra("duplicate", false); 

    removeIntent 
      .setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");  
    context.sendBroadcast(removeIntent); 
} 

private void addShortCut(Context context) { 

    Intent shortcutIntent = new Intent(Intent.ACTION_MAIN); 
    shortcutIntent.setClassName("com.example.androidapp", "SampleIntent"); 
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    shortcutIntent.putExtra("someParameter", "HelloWorld"); 

    Intent addIntent = new Intent(); 
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "ShortcutName"); 
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, 
      Intent.ShortcutIconResource.fromContext(context, 
        R.drawable.ic_launcher)); 

    addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); 
    context.sendBroadcast(addIntent); 
} 
+1

все еще не может получить эту работу. В нем говорится, что приложение не установлено (когда я нажимаю на ссылку) и не удаляет его. Можете ли вы поделиться своим рабочим проектом? Похоже, что я что-то пропустил – POMATu

+0

Мой образец проекта такой же, как в теме: http: //forum.xda-developers.com/showthread.php? T = 1583732. Я просто удаляю клавишу пробела из EXTRA_SHORTCUT_NAME –

+0

Я просто заметил то же самое с пространством в extra_shortcut_name, спасибо за подсказку. – logray

1

Чтобы удалить ярлык:

вы можете нажать и удерживать кнопку на ярлык и перетащить ярлык на мусорный ящик в нижней части, чтобы избавиться от него. Как только он станет красным, отпустите. Ярлык будет удален, но приложение останется установленным.

Чтобы добавить ярлык:

После того, как вы нашли приложение, которое вы хотите создать ярлык, вы хотите, чтобы нажать и удерживать кнопку в меню application.The приложений исчезнет, ​​и вы будете обратно на главный экран. Вы можете перетащить значок приложения влево или вправо, чтобы просмотреть различные домашние экраны. Отпустите приложение, чтобы разместить ярлык, где бы вы ни пожелали.

+5

Оригинальный плакат задает вопрос о том, как программно удалить ярлык для своего приложения с его пользовательских устройств, а не как удалить ярлык из своего собственного. – Blumer

 Смежные вопросы

  • Нет связанных вопросов^_^