从android-oreo快捷方式权限对话框中检测取消&禁止重复的快捷方式

时间:2018-03-21 10:00:12

标签: android android-8.0-oreo android-shortcut

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

由于它是系统对话框,有没有办法将权限调用为 startActivityForResult 并获得结果?与自定义活动Gmail示例类似:https://developer.android.com/guide/topics/ui/shortcuts.html#pinned
和,
如何禁止重复快捷方式。以下代码即使存在快捷方式也会创建相同的快捷方式?

enter image description here

代码:

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 手机。拖动图标后,当您到达家中时,图标会消失。

1 个答案:

答案 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
}