SimChooser | Автоматическое переключение SIM-карты при исходящем вызове в зависимос



Реп: (93)
SimChooser
версия: 1.02

Последнее обновление программы в шапке: 05.11.2012

Прикрепленное изображение Прикрепленное изображение Прикрепленное изображение Прикрепленное изображение

Краткое описание:
Переключение SIM-карты при исходящем вызове в зависимости от номера абонента или с помощью диалога если нет правила, возможность блокировки. Для Samsung DUOS.

Описание:
Будет полезна владельцам смартфонов Samsung DUOS (проверено на S6102, S6802, S5302, B5512)
Если Вам удалось запустить программу на других моделях Samsung DUOS, отпишитесь пожалуйста в этой теме.

При исходящем вызове по номеру абонента и по раннее введенным правилам активирует одну из двух установленных SIM-карт или выводит диалог для ручного выбора, если не соответствует ни одному из правил.

Правило представляет собой "маску" и действие. Преопределены четыре действия - спросить (вывести диалог), активировать SIM1, активировать SIM2 и блокировать. Маска - первая часть телефонного номера, подстановочные символы не поддерживаются. Для международного формата номера (+7901 или +38096, например) и внутреннего (8901 и 096 соответственно) необходимо прописывать свои правила. Можно также использовать USSD-коды мобильных операторов (*105#, *111# и т.п.) и группы контактов.

Для принудительного выбора необходимой SIM-карты перед номером телефона или USSD-кодом можно использовать префиксы 1* и 2*. Так, например, вызов 2**105# активирует вторую SIM-карту и выполнит запрос *105#

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

Для автоматического запуска службы при включении телефона установите соответствующую опцию в настройках.

SMS/MMS НЕ ПОДДЕРЖИВАЮТСЯ! Только исходящие вызовы
Ищу метод гарантированного перехвата исходящих SMS!

Permissions
RECEIVE_BOOT_COMPLETED, READ_PHONE_STATE, PROCESS_OUTGOING_CALLS, CALL_PHONE, VIBRATE, READ_CONTACTS, WRITE_EXTERNAL_STORAGE


Разработчик: semsoft

Русский интерфейс: Есть

Скачать: версия: 1.02
Прикрепленный файлSimChooser.apk ( 77.46 КБ )


История версий
Версия 1.02 (05.11.2012)
+ Добавлено окно настроек (через меню в основном окне)
+ Группы в качестве масок
+ Экспорт(импорт) правил на(из) SD-карту(ы)
* Устранен краш при отображении списка масок
* В уведомлении выводится название SIM
* Небольшие изменения в коде

Версия 1.01а (17.09.2012)
* Исправлена ошибка, связанная с неверным отображением активной сим в статус-баре
* Увеличено время (с 5 до 10 секунд) возврата на предыдущую сим после отправки USSD-кода

Версия 1.01 (16.09.2012)
+ Теперь программа устанавливается только во внутреннюю память телефона
+ Добавлен возврат к предыдущей сим после окончания вызова, отправки USSD
+ Добавлена обработка программой при выключении одного из слотов
+ Добавлена вибрация при отображении диалога выбора сим
+ Добавлена RU, UA локализация
* Исправлена ошибка "mask is exists" при редактировании маски
* Отключен автоповорот экрана в редакторе масок
* Теперь сообщения выдаются только при автоматических действиях программы
* Переключено на всплывающие (Toast) сообщения
* Небольшие изменения в логике и коде

Версия 1.00 (06.09.2012)



Прошлые версии
версия: 1.01а Прикрепленный файлSimChooser.apk ( 81.28 КБ )

версия: 1.01 Прикрепленный файлSimChooser.apk ( 80.3 КБ )

версия: 1.00 Прикрепленный файлSimChooser.apk ( 75.55 КБ )



Сообщение отредактировал dvoriki06 - 09.11.12, 18:45
Причина редактирования: правка



Реп: (230)
semsoft @ 09.09.2012, 02:07 *
akch1, по поводу "Операторов.."

ну тода без "операторов"...SimChooser значительно важнее :yes2:



Реп: (-4)
Прога будет существовать только для гнусмасов? Китайские дуылы типа THL W3s dual core поддерживать не планируется?



Реп: (3)
servitant @ 09.09.2012, 13:51 *
Прога будет существовать только для гнусмасов? Китайские дуылы типа THL W3s dual core поддерживать не планируется?

а это для кого написано? :rolleyes:



Реп: (18)
[quote name='titmih' date='09.09.2012, 13:10' post='15548328']
semsoft,
Поставил 3 версию ,но выскочил такой косяк (не знаю был ли на второй) , забивал маски -много забил и телефон повернул в зруках(автоповорот соответственно включен) все слетело и все по новому,осталось только забитое ранее ,перепроверил несколько раз ,всегда ,если не сохранился и экран повернулся, все слетает .Мелочь но не приятно


Ну теперь бы ещё тебя уговорить журнал звонков переделать на человеческий ,раза три уже эту просьбу писал в теме S6102 ,еще пару идеек есть но это самые главные

Сообщение отредактировал titmih - Сегодня, 13:18

[/quote)


Это было во 2-й.



Реп: (93)
titmih @ 09.09.2012, 13:10 *
всегда ,если не сохранился и экран повернулся, все слетает

упс.. косяк :)
Исправлено вместе с "This mask is exists" при редактировании маски. Обновление чуть позже

servitant @ 09.09.2012, 13:51 *
Китайские дуылы типа THL W3s dual core поддерживать не планируется?

Сложно ответить однозначно... Каким образом переключаются симки? Так же, в шторке?



Реп: (6)
titmih @ 09.09.2012, 13:10 *
... телефон повернул в руках(автоповорот соответственно включен) все слетело и все по новому,осталось только забитое ранее...

Я такое тоже наблюдал, но это было еще до этой версии, которая находится в шапке. Как-то не предал значение :happy: подумал что это случайность



Реп: (395)
semsoft @ 09.09.2012, 01:07 *
по поводу "Операторов.."
Увы, ситуацию может исправить только автор этой программы или человек, который возьмется ее сопровождать
Спойлер (+/-)

заменой строки "=paramIntent.getStringExtra(Intent.EXTRA_PHONE_NUMBER)" на "=getResultData()" или хотя бы повышением приоритета BroadcastReceiver'а.
getResultData как раз и служит для организации цепочек программ с обработкой их системой по заявленным приоритетам. Используя EXTRA_PHONE_NUMBER с наименьшим значением приоритета автор с одной стороны не дает стать ниже его программы в очереди обработки, и с другой - игнорирует все изменения вышестоящих по приоритету программ.


А вы я так понимаю запускаете сервис который регистрирует броадкаст ресивер?
А в чем проблема-то с Операторами я что-то пропустил?



Реп: (93)
igoRRRek @ 10.09.2012, 12:15 *
А вы я так понимаю запускаете сервис который регистрирует броадкаст ресивер?

Да, именно так.

igoRRRek @ 10.09.2012, 12:15 *
А в чем проблема-то с Операторами я что-то пропустил?

Обе программы используют один и тот же документированный метод для перехвата исходящего вызова с последующей установкой resultData в null для прекращения текущего вызова, выводом диалога для выбора пользователем и повторным прозвоном, если выбрано пользователем.
Once the broadcast is finished, the resultData is used as the actual number to call. If null, no call will be placed.

Но автор "Операторов.." для анализа использует не resultData, а EXTRA_PHONE_NUMBER, который нельзя изменить и содержит оригинальный номер для исходящего. При этом приоритет его броадкаст ресивера равен 0 (минимальное значение для пользовательских приложений).
For consistency, any receiver whose purpose is to prohibit phone calls should have a priority of 0, to ensure it will see the final phone number to be dialed. Any receiver whose purpose is to rewrite phone numbers to be called should have a positive priority. Negative priorities are reserved for the system for this broadcast; using them may cause problems.

Как итог:
- становлюсь выше по приоритету, устанавливаю resultData в null - Операторы игнорируют, т.к. анализируют EXTRA_PHONE_NUMBER
- становлюсь с таким же приоритетом (доступный минимум) - Операторы игнорируют, т.к. анализируют EXTRA_PHONE_NUMBER; его установку resultData в null я не вижу, приходит полный номер исходящего вызова.
Прервать броадкаст не имею права
Any BroadcastReceiver receiving this Intent must not abort the broadcast.

В результате всего этого моя программа успевает набрать номер исходящего вызова до появления диалога подтверждения или отмены звонка "Операторов..", т.е. обойти ее запрет



Реп: (230)
semsoft @ 10.09.2012, 14:24 *
В результате всего этого моя программа...

даже неудобно, што сток хлопот доставил :rolleyes:

вроде понял почему у меня иногда не срабатывает SimChooser : при нажати в шторке "стереть" и пропадании ярлыка из бара несколько вызовов (когда как : 1-4) идут без срабатывания программы...потом промаргиваеца
или же надо перещёлкнуть галку запуска штоб появился ярлык...
но подчёркиваю - ИНОГДА, бывает и без ярлыка срабатывает нормально...

Сообщение отредактировал akch1 - 11.09.12, 11:02



Реп: (93)
akch1 @ 11.09.2012, 08:20 *
даже неудобно, што сток хлопот доставил

Как раз наоборот хорошо, убедился что не мой косяк :)
akch1 @ 11.09.2012, 08:20 *
при нажати в шторке "стереть" и пропадании ярлыка из бара несколько вызовов (когда как : 1-4) идут без срабатывания программы...потом промаргиваеца

Вроде бы и не должно... проверю



Реп: (6)
semsoft @ 11.09.2012, 08:54 *
Цитата(akch1 @ 11.09.2012, 08:20) *
при нажати в шторке "стереть" и пропадании ярлыка из бара несколько вызовов (когда как : 1-4) идут без срабатывания программы...потом промаргиваеца

Вроде бы и не должно... проверю


Могу подтвердить, замечал такое же



Реп: (93)
Сейчас без исходников, просто размышления.
Возможно при нажатии "Стереть" система убивает "процесс", породивший уведомление. За уведомления у меня отвечает служба, и если ее действительно гасят, с последующим восстановлением той же системой, то в этот промежуток как раз и попадают эти "когда как". Глупо... Но если это действительно так, то придется делать либо "нестираемым" в шторке, либо возвращаться к всплывающим уведомлениям (на этот раз с рюшечками :rolleyes:). Сообщать об автоматических действиях необходимо, негоже пользователя оставлять в неведении.



Реп: (10)
Огромное человеческое спасибо автору за программу! Если бы еще к смс ее привязать - было бы просто замечательно.



Реп: (230)
semsoft @ 11.09.2012, 11:24 *
Но если это действительно так, то придется делать либо "нестираемым" в шторке, либо возвращаться к всплывающим уведомлениям (на этот раз с рюшечками ). Сообщать об автоматических действиях необходимо, негоже пользователя оставлять в неведении

нее...негоже ;)
по мне - пусть будут всплывающие... :tablet_za:

пЫ.Сы. щас после перезагрузки и при ярлыке в баре - была такая же фигня и маска кстати тоже не сработала, звонок пошол не стой симки....пока не перещёлкнул галкой :scratch_one-s_head:

пЫ.пЫ.Сы. "Операторы России" давно отключены

Сообщение отредактировал akch1 - 11.09.12, 11:03



Реп: (93)
musasimaru1979 @ 11.09.2012, 10:39 *
Если бы еще к смс ее привязать

Сам бы не против, но способа перехвата исходящих смс пока не нашел

akch1 @ 11.09.2012, 11:00 *
после перезагрузки и при ярлыке в баре

С автозапуском после перезагрузки тела и при нестертом ярлыке в баре, правильно я понял?
Бррр.. вечером проверю



Реп: (230)
semsoft @ 11.09.2012, 12:13 *
С автозапуском после перезагрузки тела и при нестертом ярлыке в баре, правильно я понял?

есс :yes2:

и ещё наковырял...процесс прибиваеца "ESДиспетчером задач" при очиске памяти "KillAll"...через какое то время так же промаргиваеца
а нельзя SimChooser сделать ваще неубиваемым ни очищалками памяти, ни шторками - вообще ничем ?
штоб как Мавзолей :rolleyes:

Сообщение отредактировал akch1 - 11.09.12, 19:45



Реп: (4)
akch1 @ 11.09.2012, 11:00 *
по мне - пусть будут всплывающие...

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



Реп: (93)
За более чем 1,5 часа стираний в шторке и около 20 ребутов добиться пропуска исходящего вызова не удалось. Дальше просто надоело
akch1 @ 11.09.2012, 12:55 *
процесс прибиваеца "ESДиспетчером задач" при очиске памяти "KillAll"...

блин, на то он и KillAll, чтобы убивать все живое :) И если Вы пользуетесь подобными программами или кнопкой "Очистка памяти" в диспетчере, то не дивительно что есть пропуски. Флаг автоподнятия службы (START_STICKY) у меня установлен, остальное за системой. В том числе и определение момента поднятия.
akch1 @ 11.09.2012, 12:55 *
а нельзя SimChooser сделать ваще неубиваемым ни очищалками памяти, ни шторками - вообще ничем ?

Думаю есть несколько вариантов - переделать андроид, не пользоваться очисткой памяти, добавить SimChooser в "белый" список тасккиллера, если такой реализован.



Реп: (12)
semsoft,, єто "прикрутить" надо вам к своей подписи навечно для сохранения сил на доводку проги:
semsoft @ 11.09.2012, 22:03 *
как SimChooser сделать ваще неубиваемым - есть несколько вариантов - переделать андроид, не пользоваться очисткой памяти, добавить SimChooser в "белый" список тасккиллера,



Реп: (93)
Kaff, да невозможно это, мужики :)
Система, например в случае критической нехватки памяти, может сама выгрузить любое приложение. Даже системное. Сама же потом, когда посчитает что уже можно, попытается восстановить убитое ею приложение. Все для такого восстановления я сделал, но у меня нет инструмента, чтобы указать ей когда же уже можно. Точно так же, как и запретить пользователю руками или с помощью других программ "очищать" память (в кавычках лишь потому, что не хочу холивара хорошо это или плохо). У меня есть только надежда, что система, когда сама посчитает нужным, апнет убитый ею или кем-то сервис.

Мне наверное проще убрать фразу из шапки, написанную жирным и капсом :) Но это так, к слову...


Полная версия   Текстовая версия

Помощь   Правила

Сейчас: 28.02.24, 08:32