如何在android oreo(8.0)上将app启动器图标添加到主屏幕?

时间:2017-10-20 05:44:37

标签: android icons shortcut launcher

我在Android 8.0上制作Android应用程序。我在Using Static Shortcuts之前阅读过开发的快捷方式文档 但是这个doc没有方法将启动器图标添加到主屏幕。

我在8.0之前使用过方法。:

Intent i= new Intent(Intent.ACTION_MAIN);  
i.addCategory(Intent.CATEGORY_LAUNCHER);

Intent intent = new Intent();     
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, i);     
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, 
context.getResources().getString(R.string.app_name));       
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, 
Intent.ShortcutIconResource.fromContext(context, R.drawable.icon));
intent.setAction(com.android.launcher.action.INSTALL_SHORTCUT);
context.sendBroadcast(intent);

如何将app luncher图标添加到主屏幕? 感谢。

2 个答案:

答案 0 :(得分:0)

如Android开发者所述

  

com.android.launcher.action.INSTALL_SHORTCUT广播对您的应用不再有任何影响,因为它现在是一个私有的隐式广播。相反,您应该使用ShortcutManager类中的requestPinShortcut()方法创建应用程序快捷方式。

请查看此链接Android 8.0 Behavior Changes

答案 1 :(得分:0)

众所周知,从android 8.0版开始,很多行为都会发生变化。在oreo中尝试以下代码,以便在安装应用程序时自动创建快捷方式图标。

 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N_MR1) {


            Intent shortcutIntent = new Intent(getApplicationContext(), SplashActivity.class);
            shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            shortcutIntent.setAction(Intent.ACTION_MAIN);

            ShortcutInfoCompat shortcut = new ShortcutInfoCompat.Builder(getContext(), "shortcut")
                    .setShortLabel(getResources().getString(R.string.app_name))
                    .setIcon(IconCompat.createWithResource(getApplicationContext(), R.mipmap.ic_launcher))
                    .setIntent(shortcutIntent)
                    .build();
            ShortcutManagerCompat.requestPinShortcut(getApplicationContext(), shortcut, null);
        }