1

如何检测该用户已拒绝创建固定快捷方式的权限?
ShortcutManager 类中没有取消回调。

既然是系统对话框,有没有办法将权限调用为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手机。拖动图标后,您到家时图标消失。

4

1 回答 1

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
}
于 2021-07-01T06:42:38.743 回答