簡體   English   中英

如果我已經發布了 5 個快捷方式,如何在 Android 11 上發布對話通知?

[英]How do I issue conversation notifications on Android 11, if I already have published 5 shortcuts?

根據“人員和對話” ,Android 11 上的對話通知的先決條件之一如下:

該通知與有效的長期動態或緩存的共享快捷方式相關聯。 通知可以通過調用setShortcutId()setShortcutInfo()來設置此關聯。

我只能有 5 個快捷方式 這是否意味着我不能為超過 5 人發送對話通知?

看來您實際上可以發布超過 5 個快捷方式。 您可以通過將rank設置為高數字來制作排名低於所有其他通知的通知,並使用shortcutManager.pushDynamicShortcut()發布它們。

如果您沒有任何啟動器快捷方式,上述操作將創建一個。 如果您不希望這樣,建議...只需刪除您剛剛創建的快捷方式

問:我的快捷方式會出現在長按應用啟動器上下文菜單中嗎? 答:他們可以根據他們的等級,但如果您不希望在啟動器上顯示快捷方式,您可以在發送通知后使用ShortcutManager#removeDynamicShortcuts()#removeAllDynamicShortcuts()刪除快捷方式。 您還可以對排名較高的其他應用快捷方式進行排名,因此只有那些動態快捷方式才會出現在啟動器上。


下面是一些想法。 普通手機上的快捷方式似乎會出現在三個地方:

  • 啟動器——通過長按應用程序圖標或固定;
  • 直接分享;
  • 對話通知。

這些快捷方式都來自同一個池。 這是有道理的,但由於每個快捷方式只有一個等級,這意味着啟動器列表和直接共享列表是相同的。 這是您可能不想要的; 您可能會在一個對話中分享更多內容,但更頻繁地打開另一個對話。 在我的應用程序中,我通過以下方式解決了這個問題:

  • 我維護用戶何時與聯系人分享/打開與聯系人聊天的統計信息
  • 每當最常用/最常用的共享聯系人列表發生變化時,我都會使用shortcutManager.pushDynamicShortcut()更新快捷方式; 如果已存在具有相同 id 的快捷方式,則會對其進行更新。 我使用來自shortcutManager.getShortcuts()的舊細節。
    • 根據快捷方式是否成為或不再成為直接共享目標,我設置或取消設置類別
    • 指定等級允許在啟動器中重新排序快捷方式
  • 每當我需要推送通知時,我都會檢查我是否已經有對話的快捷方式。 如果沒有,我只是創建一個排名為 10000 的新的。

這允許擁有完全不同的啟動器和直接共享快捷方式,並發布許多對話通知。

一些隨機觀察:

  • 向對話通知添加快捷方式 ID 也會將其圖標添加到通知中,即使您沒有明確設置。

  • shortcutManager.maxShortcutCountPerActivity實際上在我的設備 (LineageOS) 上返回 15 (,)。 即使啟動器和直接共享僅顯示常規的 4 個圖標。

  • 如果您更新快捷方式名稱和/或圖標,大多數情況下它會立即在啟動器中更新。 這包括固定的快捷方式。

  • 使用IconCompat.createWithAdaptiveBitmap()創建適用於各種圖標形狀的圖標。 系統會保留圖像,您不需要保留它。 請參閱該方法的文檔。

    還有兩種方法需要注意:

    • IconCompat.createWithAdaptiveBitmapContentUri()與上述相同,但適用於內容 URI。 這對於為通知創建Person很有用,因為這允許不將圖標保留在 memory 中。 不過貌似沒有辦法將URI權限傳遞給快捷方式管理器,所以這個方法不能用。 (如果我在這里錯了,請糾正我!)

      編輯:如果您在內聯(直接)回復后取消通知,系統可能會決定將您的回復添加到它而不是實際取消它。 顯然,此時它可能會失去 URI 權限。 在 URI 上調用此解決方法似乎有所幫助:

       fun Uri.grantReadPermissionToSystem() { applicationContext.grantUriPermission("com.android.systemui", this, Intent.FLAG_GRANT_READ_URI_PERMISSION) }
    • IconCompat.createWithData()從壓縮圖像數據 (PNG/JPEG) 創建 memory 高效圖標。 然而,它不是自適應的。 而且,用它制作的圖標根本不適用於ShortcutManager

另外不要忘記查看People 示例應用程序的自述文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM