簡體   English   中英

Android - 如何使用代碼允許/啟用“浮動通知”設置作為應用程序的默認設置

[英]Android - How to allow/enable “Floating notifications” setting as default for App using code

我想使用 Android 代碼啟用浮動通知。通常用戶不知道該設置。 所以我需要默認啟用它。

應用程序的通知設置

恐怕是壞消息。

您可能知道,這需要權限SYSTEM_ALERT_WINDOW

由於 Android M google 已經開始鎖定此權限以減少混亂。 這個權限有點不尋常的是它需要用戶進入一個實際的設置屏幕。普通的 Android M 權限流程對此不起作用 引用 API:

如果應用面向 API 級別 23 或更高級別,則應用用戶必須通過權限管理屏幕向應用明確授予此權限

您可以使用 Settings 類來檢查您是否已經擁有權限,如果沒有,您需要通過intent解釋並引導用戶進入相關設置屏幕:

Intent i = new Intent();
i.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
i.addCategory(Intent.CATEGORY_DEFAULT);
i.setData(Uri.parse("package:" + context.getPackageName()));
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
i.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
context.startActivity(i);

應該只影響運行 23+ 的設備,因為舊設備應該自動獲得許可,但不要依賴檢查 SDK_INT,而是依賴canDrawOverlays ,因為一些 pre-marshmallow 設備有例外

我也面臨同樣的問題,需要從設置中啟用它,但在清單文件中添加權限后,它運行良好。

<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />

在版本 9 上測試。

我為此苦苦掙扎並找到了方法。 (就我而言,我使用的是OneSignal React-Native SDK

解決方案是創建一個具有“緊急”重要性的“類別”(在 OneSignal 控制台上):)

之后,在發送推送時,必須參考該類別的channel_id。 文檔: https : //documentation.onesignal.com/docs/android-notification-categories

暫無
暫無

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

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