文档中的固定快捷方式最低 API 级别与代码不兼容

Pinned Shortcuts Minimum API Level in Documentation Incompatible With Code

如文档所述:

If your app targets Android 7.1 (API level 25) or higher, you can define shortcuts to specific actions in your app.

  • Pinned shortcuts are published at runtime and also use the ShortcutManager API. During runtime, your app can attempt to pin the shortcut, at which time the user receives a confirmation dialog asking their permission to pin the shortcut. The pinned shortcut appears in supported launchers only if the user accepts the pinning request. Link

所以应该可以在 API 25 级中使用固定的快捷方式,并且 上面,但在代码中我得到 Calls require API level 26.

错误

所有 PinShortcut 方法都会发生这种情况,例如:

if (android.os.Build.VERSION.SDK_INT >=  Build.VERSION_CODES.N_MR1)
            ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);
            if (shortcutManager.isRequestPinShortcutSupported()) {
               //do something
            }
}

shortcutManager.createShortcutResultIntent(pinShortcutInfo);

这些代码行获取并且 API 级别 26 是必需的错误。

问题是什么?为什么 Document 和 SDK 说的不一样? 我该如何解决这个问题?

虽然 ShortcutManager 是在 API 25 中添加的,但它的一些方法是后来在 API 26 中添加的。

您可以在文档中看到 isRequestPinShortcutSupported and createShortcutResultIntent 方法已添加到 API 26.

换句话说:

  • 在 API 25 中,您可以在您的应用中启用快捷方式,但如果用户需要,必须手动将这些快捷方式添加到主屏幕。
  • 在 API26 中,您可以使用这两种新方法请求将这些快捷方式自动添加到主屏幕。