Как проверить программно, если пользователь отключит push-уведомление в настройках приложения? Могу ли я открыть настройки приложения прямо из приложения, чтобы пригласить пользователя включить его?
Спасибо
Как проверить программно, если пользователь отключит 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)
, будет проверяться идентификатор вызывающего абонента: be 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);
}