我知道它没有记录,也不适用于所有设备,但我看到越来越多的应用程序在安装后将其快捷方式放在主屏幕上。 发现一堆代码块如何做到但对我来说它们并不适合。 这就是我现在所得到的。
需要清单中的权限。
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
创建应调用的活动意图。 Ex(来自cgeek):
Intent shortcutIntent = new Intent();
shortcutIntent.setClassName("com.example.androidapp", "SampleIntent");
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, "Shortcut Name");
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.drawable.icon));
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
context.sendBroadcast(addIntent);
我的问题是: 在安装.apk之后,这段代码应该去哪里添加快捷方式?我在启动器活动中尝试了这段代码,每次应用程序启动时都会创建损坏的(另一个故事)快捷方式。
答案 0 :(得分:19)
据我所知,这是Market应用程序的可选功能,而不是应用程序本身。根据设计,应用程序不会收到有关自身安装的广播。如果该代码有效,则最快可以执行它,这是用户第一次启动应用程序。那说:
执行。不。自动。创建。应用。快捷方式。
自从。
不要篡夺用户的UI设计。
答案 1 :(得分:3)
我同意目前接受的答案,即您不应通过接收广播或安装时间来做到这一点。没有用户互动或许可,不要做任何事情。
但是,如果在应用程序中提供了一个按钮,则可以将其放在按钮OnClick处理程序中。然后,当用户选择“添加快捷方式”选项时,它将添加快捷方式。
答案 2 :(得分:2)
这可以在oncreate方法
中将以下代码添加到主要活动中 Intent HomeScreenShortCut= new Intent(getApplicationContext(),
MainActivity.class);
HomeScreenShortCut.setAction(Intent.ACTION_MAIN);
HomeScreenShortCut.putExtra("duplicate", false);
//shortcutIntent is added with addIntent
Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, HomeScreenShortCut);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "AppName");
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);
添加此权限添加到您的清单
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
答案 3 :(得分:0)
我使用此代码在主页上创建了3个快捷方式:
Intent HomeScreenShortCut= new Intent(getApplicationContext(),
MainActivity.class);
HomeScreenShortCut.setAction(Intent.ACTION_MAIN);
HomeScreenShortCut.putExtra("duplicate", false);
//shortcutIntent is added with addIntent
Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, HomeScreenShortCut);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "AppName");
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);
答案 4 :(得分:0)
上述相同方法存在缺点。将快捷方式带到主屏幕。