2015-04-09 2 views
0

Мое приложение создает ярлык на главном экране, когда нажата конкретная кнопка. Но когда я нажимаю ту же кнопку в следующий раз, когда она создает еще один ярлык, не удаляя предыдущий ярлык. Есть ли какие-либо проблемы в моем кодеЯрлык для Android не удаляется

private void ShortcutIcon(){ 
       final String PREF_KEY_SHORTCUT_ADDED="Poo"; 

       // Checking if ShortCut was already added 
      SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
    boolean shortCutWasAlreadyAdded = sharedPreferences.getBoolean(PREF_KEY_SHORTCUT_ADDED, false); 
    Toast.makeText(getApplicationContext(), "creating shortcut on desktop", 
       Toast.LENGTH_LONG).show(); 


    // if (shortCutWasAlreadyAdded) return; 


    Intent shortcutIntent = new Intent(getApplicationContext(),    Shortcut.class); 
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    Intent addIntent = new Intent(); 
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "SOS"); 
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.sos)); 
    if (shortCutWasAlreadyAdded) 
    { 

     Intent shortcut = new Intent(); 
     shortcutIntent.setAction(Intent.ACTION_VIEW); 


    shortcutIntent.setClassName(MainActivity.this, "com.example.urltesting.Shortcut"); 

    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    Intent removeIntent = new Intent(); 
    removeIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcut); 
    removeIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "SOS"); 
    removeIntent.putExtra("duplicate", false); 

    removeIntent.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT"); 
    Toast.makeText(getApplicationContext(), "trying to remove shortcut", 
      Toast.LENGTH_LONG).show(); 
    getApplicationContext().sendBroadcast(removeIntent); 
    } 


    addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); 
    getApplicationContext().sendBroadcast(addIntent); 

    // Remembering that ShortCut was already added 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putBoolean(PREF_KEY_SHORTCUT_ADDED, true); 
    editor.commit(); 
} 

}

ответ

0

Вы добавили ниже разрешения в вашем файле манифеста?

<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/

Вы используете сторонний пусковой установки (кроме пусковой установки Android) на своем телефоне? СОЗДАНИЕ И УДАЛЕНИЕ App-Shortcut работает до тех пор, пока используемая вами пусковая установка поддерживает эту операцию.

Если вы используете по умолчанию андроид запуска, то вы можете попробовать ниже код, чтобы удалить/удалить приложение-ярлык:

shortcutIntent = new Intent(); 
    shortcutIntent.setClassName("com.abc.xyz", "XYZActivity"); 
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    icon = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon); 

    Intent intentShortcut = new Intent(); 
    intentShortcut.putExtra("android.intent.extra.shortcut.INTENT", shortcutIntent); 
    intentShortcut.putExtra("android.intent.extra.shortcut.NAME", getResources().getString(R.string.app_name)); 
    intentShortcut.putExtra("android.intent.extra.shortcut.ICON_RESOURCE", icon); 
    intentShortcut.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT"); 
    sendBroadcast(intentShortcut); 
+0

Я добавил разрешения и я не использую любые 3-launcher.I партии установили другие приложения, которые могут удалить значок, но мой код не в состоянии сделать это –

+0

Я отредактировал свой ответ с потенциальным исправлением проблемы, с которой вы сталкиваетесь. Вам нужно будет отредактировать имя класса, о котором я упоминал, с вашим именем класса. Напишите обратно, если это не устранит проблему. – Gagan

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