Android – Push Notification включены?

Как проверить программно, если пользователь отключит push-уведомление в настройках приложения? Могу ли я открыть настройки приложения прямо из приложения, чтобы пригласить пользователя включить его?

Введите описание изображения здесь

благодаря

Предполагая, что вы имеете в виду облачные сообщения Google (поскольку вы используете тег android и push-notification), нет общих настроек, используемых для включения / отключения службы GCM (в отличие от службы уведомлений Apple Push для устройств iOS).

Когда вы устанавливаете приложение, если приложение использует Google Cloud Messaging, оно будет указано в списке разрешений, необходимых для этого приложения для работы. Выбрав приложение, вы разрешаете ему отправлять push-уведомления.

Тем не менее, чтобы приложение действительно получало сообщения GCM, ваше приложение должно программно зарегистрироваться в службе GCM. Вы можете сделать это в любом месте в своем приложении, и вы можете создать активность app settings (или фрагмент или что-то еще), в котором пользователь может включить / отключить GCM (что вызовет регистрацию / отмену регистрации в / из GCM). Ваше приложение может содержать постоянное хранилище, которое будет содержать идентификатор регистрации, который вы получите при регистрации, в GCM, и вы можете использовать этот магазин, чтобы определить, зарегистрировано ли ваше приложение в GCM.

Вы можете попросить своего пользователя включить его, если приложение уже запущено (если у вас есть код, который это делает). Если он не запущен и приложение не зарегистрировано для GCM на этом устройстве, ваш сервер не может отправлять ему сообщения GCM.

Если вы хотите преодолеть это препятствие, вы можете автоматически зарегистрироваться в GCM (когда приложение впервые запустится). Затем вы можете отправлять сообщения в приложение, когда захотите. Если вы все же хотите, чтобы пользователь решил, хотят ли они видеть эти уведомления, вы можете иметь флаг в настройках вашего приложения, который включает / отключает уведомление пользовательского интерфейса, которое вы создаете в результате входящего сообщения GCM. Служба GCM всегда будет включена, но если пользователь не захочет просматривать уведомления, приложение не будет отображать ничего, когда поступит сообщение GCM.

Вы не можете получить доступ к этому свойству, если вы не объявите системный процесс или не имеете права root, сначала вы можете увидеть разрешение файла: /data/system/notifycaiton_policy.xml: -wr ——.

Другим способом см. Исходный код: /android/4.2/frameworks/base/services/java/com/android/server/NotificationManagerService.java. В api: public void setNotificationsEnabledForPackage(String pkg, boolean enabled) , проверит Process.SYSTEM_UID вызывающего абонента, будет ли Process.SYSTEM_UID :

 void checkCallerIsSystem() { int uid = Binder.getCallingUid(); if (UserHandle.getAppId(uid) == Process.SYSTEM_UID || uid == 0) { return; } throw new SecurityException("Disallowed call for uid " + uid); } 
Intereting Posts
Код переключения между режимами отладки и режима выпуска в java – android Android: fontFamily требуется уровень api 16, но, как утверждают, уровень 15 в порядке? Как получить информацию обо всех запущенных действиях в android программно? Как мы можем использовать startActivityforResult () для намерения электронной почты? Изменение цвета фона линейного макета при нажатии Проблема с Eclipse при программировании для Android – «Обновление внешних папок» В чем разница между доступом к файлу из папки с данными или SD-картой Как создать выпуск подписанного файла apk с помощью Gradle? Как подключить javadoc к пользовательскому файлу .aar в студии Android? Динамическое создание байт-кода Dalvik в запущенном приложении Dalvik / Android Android TextView: изменение цвета текста при нажатии Подписание двух приложений с одним и тем же ключом Время доставки GCM-сообщений WILDLY беспорядочно Android UserManager: проверьте, является ли пользователь владельцем (admin) Невозможно выполнить регистрацию с использованием модуля firebase auth