2013-11-14 3 views
0

Предположим, у меня есть приложение для Android, которое помогает пользователям устанавливать некоторые другие приложения. Есть ли способ создать ярлык для этих приложений на главном экране? Могу ли я также указать положение этих ярлыков?Как программно создать ярлык для другого приложения в Android?

+0

Я не понимаю; Что вы подразумеваете под ярлыками? Итак, вы хотите создавать иконки приложений/виджеты для установленных приложений? – LotusUNSW

+0

@LotusUNSW Да, я хочу создавать значки приложений для установленных приложений. –

ответ

1

Попробуйте это:

public void createShortCut{ 
    Intent shortcutintent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); 
    shortcutintent.putExtra("duplicate", false); 
    shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.shortcutname)); 
    Parcelable icon = Intent.ShortcutIconResource.fromContext(getApplicationContext, R.drawable.icon); 
    shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon); 
    shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent("com.whatsapp")); 
    sendBroadcast(shortcutintent); 
} 
+0

thanx для кода, но есть ли способ проверить, существует ли подобный короткий отрезок, прежде чем создавать более новый? –

+0

Попробуйте с shortcutintent.putExtra ("duplicate", false); – Piero

+0

Как создать URL-адрес с помощью этого кода? –

-1

На Android нет такого API.

+1

Мне нужно комментировать, а не отвечать. – duggu

0

Один из способов создания виджета. Но опять же пользователь должен поместить виджет на свой домашний экран, чтобы он работал.

0
A bit improved version: we are checking if the shortcut has been already created 
and must not be created if user remove it from the screen 

final static private String PREF_KEY_SHORTCUT_ADDED = "PREF_KEY_SHORTCUT_ADDED"; 

@Override 
    public void onStart(){ 
     super.onStart(); 

// Checking if ShortCut was already added 
     sharedPreferences = getPreferences(MODE_PRIVATE); 
     boolean shortCutWasAlreadyAdded = sharedPreferences.getBoolean(PREF_KEY_SHORTCUT_ADDED, false); 
     if (!shortCutWasAlreadyAdded) createShortcutIcon(); 


    }// end onStart 


    // Creates shortcut on Android widget screen 
    private void createShortcutIcon(){ 

     Intent shortcutIntent = new Intent(getApplicationContext(), Splash.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, getString(R.string.app_name)); 

     addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE 
       , Intent.ShortcutIconResource.fromContext(getApplicationContext() 
         , R.drawable.ic_launcher)); 

     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(); 

     objPublicDelegate.showToast(getString(R.string.app_name)+ " shortcut created on screen."); 

    }// end createShortcutIcon 
+0

Спасибо. shortcutIntent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK); shortcutIntent.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP); Без этих двух строк иногда появляется приложение, говорящее «TransactionTooLargeException». Чтобы избежать этого исключения, необходимо добавить эти строки. –

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