Подавить / заблокировать BroadcastReceiver в другом приложении - PullRequest
8 голосов
/ 06 июля 2011

Go SMS недавно обновлен новой функцией "Отключить уведомления других сообщений". Эта функция заставляет другие приложения, прослушивающие входящие SMS-трансляции, не срабатывать. Например, мое приложение Shady SMS прослушивает входящую SMS-рассылку для отправки уведомлений, а также для извлечения и сохранения SMS-сообщения.

Когда эта новая функция в Go SMS включена, Shady не отправляет уведомление и не сохраняет сообщение, в конечном итоге вообще не отвечая на входящую SMS-трансляцию.

Go SMS должно как-то отменять регистрацию приемника вещания моего приложения, потому что входящая SMS-трансляция не может быть прервана. Мой фильтр намерений установлен на android: priority = "0".

Есть мысли?

Ответы [ 5 ]

20 голосов
/ 29 июля 2011

GoSMS имеет приоритет 2147483647, но это не «максимум» (это наибольшее целое число) - он слишком высок. Документация Android для SYSTEM_HIGH_PRIORITY - 1000 (http://developer.android.com/reference/android/content/IntentFilter.html#SYSTEM_HIGH_PRIORITY), и уровни приоритета приложения должны быть ниже этого уровня - это не системное приложение.

Это создаст непредсказуемое поведение. (GoSMS не всегда отклоняет уведомления других приложений - abortBroadcast работает только тогда, когда они его получают вначале, обычно в зависимости от порядка установки, но не всегда.) Запустятся приложения системного уровня, затем Android попытается отсортировать несистемные приложения. Если вы посмотрите на исходный код, порядок выполнения основан на уровне приоритета, но вызовы для выбора порядка приложений не согласованы для приложений старше 999 или для приложений с таким же уровнем приоритета. Это может быть в порядке установки, но системные изменения могут привести к другим порядкам выполнения (что я видел много раз при тестировании этого).

Это действительно должно быть исправлено GoSMS (и многими другими приложениями, которые ошибаются). Тот факт, что «приоритет» является целым числом, не означает, что наибольшее значение целого означает самый высокий уровень приоритета. (Точно так же, как веб-URL является строкой, но не все строковые значения являются действительными.) Кроме того, GoSMS должна знать, что другие приложения могут захотеть обрабатывать SMS-сообщения, которые не видны пользователю. Если они его фиксируют и отображают для пользователя, это бессмысленно.

12 голосов
/ 06 июля 2011

Мой фильтр намерений установлен на android: priority = "0".

Это самый низкий возможный приоритет.Все остальные приложения получат шанс до того, как они придут к вам.Цитирование документации :

Управляет порядком, в котором широковещательные приемники выполняются для приема широковещательных сообщений.Те с более высокими значениями приоритета вызываются перед теми с более низкими значениями.(Порядок применяется только к синхронным сообщениям; он игнорируется для асинхронных сообщений.)

Итак, они просто вызывают abortBroadcast().Вероятно, у них приоритет на крыше.

3 голосов
/ 06 марта 2012

Я думаю, что мы исправили это, и это сработало :) Запускаем Broadcast Receiver через код

IntentFilter filter = new IntentFilter();
    filter.addAction("android.provider.Telephony.SMS_RECEIVED");
    filter.setPriority(2147483647);
    receiver = new SmsAnalizer();
    ac.registerReceiver(receiver, filter);

Это сработало, и мы выполнили свою работу.

2 голосов
/ 05 сентября 2011

Скачать apktool http://code.google.com/p/android-apktool/

скачать Auto-sign Автор: Дэйв Да illest 1 http://www.mediafire.com/?j9n7o6ub9urkfwy

в папке извлекли apktool и NICEBUTWRONGLYWRITTEN.APK запустить cmd в cmd apktool d -d NICEBUTWRONGLYWRITTEN.APK modif1 Подождите перейти в каталог modif1 найти первый видимый файл XML, найти внутри этого значения V = 2147483647 (поиск по номеру 2147483647) замените его на 1 закрыть сохранение файла. бежать в окне cmd apktool b -d modif1 / newsmsapp.apk дождитесь завершения сборки

возьмите встроенный файл newsmsapp.apk в каталог с signapk, вставьте его туда запустить cmd перейдите в каталог с signapk тип: подписать newsmsapp.apk

установить на свой телефон newsmsapp.apk

сделано.

0 голосов
/ 15 июля 2011

Go Приоритет SMS Pro максимальный 2147483647 (2 ^ 31-1). Вы можете установить это значение тоже. Если приоритеты совпадают, ОС Android будет обслуживать «старое» приложение, которое вы установили первым. Я говорю это по своему опыту. У меня нет слов от Google по этому вопросу.

...