Подтвердить что ты не робот

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

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

enter image description here

Спасибо

4b9b3361

Ответ 1

Предполагая, что вы имеете в виду облачные сообщения 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.

Ответ 2

вы не можете получить доступ к этому свойству, если вы не объявите системный процесс или не имеете права 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);
}