添加Android应用程序的快捷方式到主屏幕点击button

我想通过按下button来轻松地将我的应用程序添加到主屏幕。 所以我在想什么是我的应用程序底部的一个button,说:“添加到主屏幕”,当它被按下时,它添加到主屏幕的快捷方式而不closures应用程序。 我应该添加什么代码要做到这一点?

    作为一个额外的发送INSTALL_SHORTCUT广播与生成的意图(在这种情况下,结果意图直接打开一些活动)。

    //where this is a context (eg your current activity) final Intent shortcutIntent = new Intent(this, SomeActivity.class); final Intent intent = new Intent(); intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); // Sets the custom shortcut's title intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name)); // Set the custom shortcut icon intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(this, R.drawable.icon)); // add the shortcut intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); sendBroadcast(intent); 

    您的清单中还需要此权限:

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

    第一步,你应该让发射器可以收到广播:

      <!-- Intent received used to install shortcuts from other applications --> <receiver android:name="com.android.launcher2.InstallShortcutReceiver" android:permission="com.android.launcher.permission.INSTALL_SHORTCUT"> <intent-filter> <action android:name="com.android.launcher.action.INSTALL_SHORTCUT"/> </intent-filter> </receiver> 

    接下来,在manifest.xml中添加一个权限

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

    最后,创build一个函数并在你点击button时调用它:

     public void createShortCut(){ // a Intent to create a shortCut Intent shortcutintent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); //repeat to create is forbidden shortcutintent.putExtra("duplicate", false); //set the name of shortCut shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.shortcutname)); //set icon Parcelable icon = Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.icon); shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon); //set the application to lunch when you click the icon shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(getApplicationContext() , EnterActivity.class)); //sendBroadcast,done sendBroadcast(shortcutintent); } 

    像这样做:

     button.setOnClickListener(new OnClickListener() { public void onClick(View v) { createShortCut(); } }); 

    好的…我知道这是旧的线程,但我想确保工程师访问此线程有最新的信息。

    从Android O开始 – 作为Background Check Limits(隐式接收者)的一部分,com.android.launcher.action.INSTALL_SHORTCUT广播不再对您的应用程序产生任何影响,因为它现在是一个私有的隐式广播。

    每个Android O ActivityManagerService.java:

      case "com.android.launcher.action.INSTALL_SHORTCUT": // As of O, we no longer support this broadcasts, even for pre-O apps. // Apps should now be using ShortcutManager.pinRequestShortcut(). Log.w(TAG, "Broadcast " + action + " no longer supported. It will not be delivered."); 

    我希望这有帮助 !