2015-07-12 1 views
9

В соответствии с the doc:Блокировать входящие SMS-сообщения на корневом Android 4.4 и выше?

Обратите внимание, что-начиная с Android 4.4, любая попытка вашего приложения, чтобы прервать SMS_RECEIVED_ACTION вещание будет проигнорировано, поэтому все приложения заинтересованы иметь возможность получить его.

так, только по умолчанию приложение SMS может сделать это и выглядит как будто ничего не изменилось с Android 5.0 (из-за неизвестной причине, по issue помечается как устаревшее).

Есть ли способ заблокировать входящие SMS-сообщения для SMS-сообщения, отличного от по умолчанию, если телефон укоренен (это необходимо для приложения для блокировки спама)? Как это сделать?

+1

Кто отказался, не могли бы вы объяснить, почему? –

ответ

4

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

BIND_CARRIER_MESSAGING_SERVICE Разрешение, необходимое для регистрации в качестве службы обмена сообщениями оператора, требует, чтобы приложение было системным приложением. Поэтому вам нужно подтолкнуть приложение к системе.

5

Сделайте свое приложение поставщиком SMS по умолчанию. Затем он может зарегистрироваться для SMS_DELIVER_ACTION. В этом получателе вы можете либо написать SMS-сообщение в базу данных, либо нет. Если вы этого не сделаете, SMS в основном игнорируется. Если вы решите, любое другое приложение может получить SMS.

+1

Вопрос заключается в том, как сделать это, не делая приложение в качестве поставщика SMS по умолчанию. –

+4

В этом вопросе не сказано. Ответ заключается в том, что вы не можете понять, почему они добавили материал поставщика SMS по умолчанию, чтобы помешать приложениям, которые использовали эту функцию злонамеренно. Чтобы предотвратить SMS, вы должны теперь явно предоставить эту власть пользователю. –

+1

Вы правы, вопрос не говорил об этом четко. –

2

Вы можете попробовать следующее решение:

перебирать список пакетов, способных обрабатывать SMS и отключать их программно.

Чтобы получить API для отключения приложения, вам необходимо стать партнером-партнером MDM (Mobile Device Management). Приложения предоставляют дополнительные API-интерфейсы своим партнерским приложениям MDM для управления устройством. Например, samsung предоставляет api для отключения определенного приложения . Я думаю, у них также есть API для управления разрешениями определенных приложений.

В качестве альтернативы, я думаю, что новый режим Android Device/Profile Owner должен иметь API для отключения определенных приложений.