如何检测用户是否已拒绝创建固定快捷方式的权限?
在ShortcutManager类中没有 cancel 回调。
由于它是系统对话框,有没有办法将权限调用为 startActivityForResult 并获得结果?与自定义活动Gmail示例类似:https://developer.android.com/guide/topics/ui/shortcuts.html#pinned
和,
如何禁止重复快捷方式。以下代码即使存在快捷方式也会创建相同的快捷方式?
代码:
ComponentName cn = new ComponentName(context.getPackageName(),
"com.abc.SplashActivity");
ShortcutInfo pinShortcutInfo =
new ShortcutInfo.Builder(context, "unique-id").setShortLabel("UPI Shortcut").setIntent(getShortcutIntent()).setActivity(cn).build();
Intent pinnedShortcutCallbackIntent =
mShortcutManager.createShortcutResultIntent(pinShortcutInfo);
pinnedShortcutCallbackIntent.setAction(Intent.ACTION_MAIN);
pinnedShortcutCallbackIntent.putExtra("duplicate", false);
PendingIntent successCallback = PendingIntent.getBroadcast(context, 0,
pinnedShortcutCallbackIntent, 0);
mShortcutManager.requestPinShortcut(pinShortcutInfo,
successCallback.getIntentSender());
此外,此代码与Pixel模拟器完美配合,但拖拽创建快捷方式特别适用于 Essential 手机。拖动图标后,当您到达家中时,图标会消失。
答案 0 :(得分:0)
如何禁止重复的快捷方式?
这就是您可以使用此功能执行的操作。此函数返回布尔值是否已添加该快捷方式。
shortcutManager.pinnedShortcuts
返回当前可用快捷方式的列表。
private fun checkShortcutIsAvailable(shortcutManager: ShortcutManager, app: App): Boolean {
var exist = false
for (shortcut in shortcutManager.pinnedShortcuts) {
if (shortcut.id == app.id) {
exist = true
break
}
}
return exist
}