我看到了制作快捷方式的方法,但我需要找到一种获取手机上安装的快捷方式列表的方法。
我希望我的用户能够从我的应用程序中选择他/她的一个快捷方式并启动它。有没有一种方法可以做到这一点(API),或者我需要使用反射方法调用系统服务?
Intent shortcutsIntent = new Intent(Intent.ACTION_CREATE_SHORTCUT);
List<ResolveInfo> shortcuts = getPackageManager().queryIntentActivities(shortcutsIntent, 0);
这些快捷方式是专属于 Launcher 的。没有 API,而且任何你试图做的事情都会非常脆弱,因为不同的启动器实现(和版本)将具有不同的存储结构。
除了 Jonathan之外,
每个应用程序都可以使用快捷方式。每个快捷方式在应用程序清单中指定。因此,您可以获取快捷方式列表(此方法在活动中):
Kotlin
fun printShortcuts() {
val shortcutIntent = Intent(Intent.ACTION_CREATE_SHORTCUT)
val shortcuts = packageManager.queryIntentActivities(shortcutIntent, 0)
shortcuts.forEach {
println("name = ${it.activityInfo.name}, label = ${it.loadLabel(packageManager)}")
}
}
I/System.out: name = com.whatsapp.camera.CameraActivity, label = WhatsApp Camera
I/System.out: name = com.android.contacts.ContactShortcut, label = Contact
I/System.out: name = alias.DialShortcut, label = Direct dial
I/System.out: name = alias.MessageShortcut, label = Direct message
我正在尝试做同样的事情,但这个主题有很多不清楚的地方,至少对我来说不清楚...........一个例子是Openapp市场,每次你“下载”一个应用程序时都会创建快捷方式,但实际上快捷方式只是一个指向HTML页面的链接。无论如何,我有两部安卓手机,在第一部手机上可以工作,在第二部手机上没有创建任何快捷方式.......
在我的应用程序中,我执行以下操作:
Intent shortcutIntent = new Intent(this,FinestraPrincipaleActivity.class);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
shortcutIntent.putExtra("someParameter", "HelloWorld");
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(this, R.drawable.icon));
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
this.sendBroadcast(addIntent);
但是有人告诉我这样做是错误的,但我没有找到其他创建快捷方式的方法...