How can I add my application's shortcut to the homescreen upon app installation? [duplicate]

穿精又带淫゛_ 提交于 2019-11-27 00:53:49

问题


I want to create my app's shortcut/launcher icon on the homescreen as soon as I install my app (even before I start it). Is that possible? How might I do that?


回答1:


NOTE: This answer is now wrong. See, for instance, Robin's answer for a way to do this.


As far as I know, an app cannot force itself onto the home screen. It gets added to the app list that the launcher app maintains, but the home screen is generally under user control. Giving apps the ability to clutter up the home screen would be an open invitation for abuse.




回答2:


Since ICS, you can do like this:

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(getApplicationContext(), EnterActivity.class));
    sendBroadcast(shortcutintent);
}

Please also refer to the source code of launcher at: this link

Edit : If somebody would miss reading comment so adding following line.

This requires "com.android.launcher.permission.INSTALL_SHORTCUT" permission




回答3:


You forgot to add permissions:

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

Great tutorial here: http://androidforbegineers.blogspot.in/2014/01/android-home-screen-shortcut.html#!




回答4:


If you install your application, neither your application, nor any services or other processes are active! Android want's the user to make the first step in "opening" the application. You are not able to install a shortcut directly! Thats the answer. Notice: On most devices the launcher will create a shortcut for your application itself.

Can you install shortcuts in runtime after the user has somehow started your app at least once? : yes (see Robins answer).

Is there a workaround? Maybe, but no good one.

Update, Another hint: If you have already an application on the device of the user. (For example if your second app that gets installed is the key for "going pro" or something), then you actually can start the second application from the first one, without the user has started the second app ever (and add a shortcut).




回答5:


  1. Create function to call intent of shortcut:

    private void criarAtalho() {
        Intent shortcutIntent = new Intent(getApplicationContext(), SplashScreen.class);
        shortcutIntent.setAction(Intent.ACTION_MAIN);
        Intent addIntent = new Intent();
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "nomeDaApp");
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.mipmap.ic_launcher));
    
        addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
        addIntent.putExtra("duplicate", false);  //may it's already there so don't duplicate
        getApplicationContext().sendBroadcast(addIntent);
    }
    
  2. write on OnCreat the call of function:

    if(!getSharedPreferences("APP_PREFERENCE", Activity.MODE_PRIVATE).getBoolean("IS_ICON_CREATED", false)){
        criarAtalho();
        getSharedPreferences("APP_PREFERENCE", Activity.MODE_PRIVATE).edit().putBoolean("IS_ICON_CREATED", true).commit();
    }
    
  3. set the permissions on manifest:

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



回答6:


First, add permission for adding shortcut to manifest:

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

Then, call the function below.

public void createShortcut(){
    Intent intentShortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
    intentShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
    Parcelable appicon = Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.ic_launcher);
    intentShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, appicon);
    intentShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(getApplicationContext(), MainActivity.class));
    intentShortcut.putExtra("duplicate", false);
    sendBroadcast(intentShortcut);
}


来源:https://stackoverflow.com/questions/18327173/how-can-i-add-my-applications-shortcut-to-the-homescreen-upon-app-installation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!