Pull to refresh

Comments 39

Ну может нет подробного API для исходящих, чтоб не писали спамилки?
Ну и чтоб приложения не делали произвольных звонков, минуя хозяина, что может быть чревато опустошением баланса.
Часты случаи, когда пользователь не отсылает сообщение сразу, а кладет в черновики. Будет ли корректно отрабатывать конструкция с базой СМС?

Для более детальной обработки сообщений можно повесить разные обработчики для разных груп сообщений:

Входящие (content://sms/inbox), неудачные (content://sms/failed), черновики (content://sms/draft), исходящие (content://sms/outbox), недоставленные (content://sms/undelivered), пребывающие в очереди (content://sms/queued), отправленные (content://sms/sent)

Или же по идентификатору сообщения проверить не принадлежит ли сообщение одной из вышеперечисленных груп
Мониторинг входящих сообщений. Наверное реализация этой части самая простая и легкая.

А теперь попробуйте установить какой-нибудь GO SMS и Вам перестанет так казаться). Дело в том, что при входящем сообщении выбрасывается Ordered Broadcast, который в отличии от обычного распространяется синхронно. И тут, очень важно быть первым в очереди, иначе урвут другие. Стать круче других поможет выставленный priority, но наивно будет думать, что Google питает к Вам более теплые чувства, чем к остальным страждущим, так что в системе вполне могут найтись сразу несколько умников с максимальным приоритетом. И любому из них может прийти в голову ни с кем не делиться, не пересылать дальше, а просто прервать цепочку.

Как-то так:
<receiver android:name=".SmsReceiver" android:exported="true" > 
  <intent-filter android:priority="1000"> 
    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
  </intent-filter> 
</receiver>


Интересно также, что в качестве приоритета можно установить хоть Integer.MAX_VALUE, ошибки не будет, но если верить документации, то нет смысла выставлять выше IntentFilter.SYSTEM_HIGH_PRIORIRY.
Именно из-за того, что смс-клиенты (или как их верно назвать) используют максимальный приоритет, хотя должны использовать минимальный, пришлось отказаться от использования HandscentSMS.
В своем приложении делал глушилку принятого смс, если оно нужно приложению и дальше оно не проходило, но этот клиент все равно перехватывал его и появлялось уведомление, при чем на стоковом или на том, который сейчас использую «ChompSMS» такого поведения нет, верно реализовано.
Оторвать руки разработчикам этих клиентов…
п.с. писал разработчикам Handscent на мыло с маркета — не ответили.
Спасибо за инструкции, но вот зачем в приложении может потребоваться слежка за входящими/исходящими звонками/смс, если только это не программа-шпион/вирус?
К примеру если нужно приложение или функция бекапа сообщений / звонков и сбор различной статистики
Бекап в реальном времени только если… Кстати был бы такой софт…
А такой сбор статистики уже больше похож на шпионское по…
Шпионское ПО это то ПО, которое установилось само или же под видом другого ПО, например безобидной игры. Не могу раскрыть всех деталей, но это приложение будет небольшой частью персональной поисковой системы, и пользователь будет ставить его конечно-же понимая что он делает и зачем
Хм, интересно, Ну что-ж, тогда удачи в разработке, если она в благих целях!
Я разработчик под IOS, и у меня волосы дыбом встают, когда мне говорят о существовании возможности, из приложения, без модификации OC, перехватывать звонки пользователя. Мне вот очень интересно, неужели никого из разработчиков под Android это не беспокоит?
О, это ещё цветочки. Вы представляете, на андроид любая программа совершенно штатно может выполняться в фоне, а публикация на маркете занимает всего несколько минут. Уму непостижимо!
Я нисколько не умаляю возможности Android в плане многозадачности, нам бы это на IOS, просто сказка была бы. Но вот возможность публиковать на маркете программу за пару минут уже сложно отнести к безусловным плюсам.
Мне очень не нравится прохождение проверок по несколько дней при публикации на IOS, но больше меня беспокоит, что нехорошие люди под видом игрушки могут опубликовать любую гадость за пару минут на Android.
Да, это верно, андроид не для совсем глупых людей. Приходится смотреть на список разрешений, которые требует приложение и понимать, что отсылка смс для игрушки очень подозрительна. Ну да простые люди могут поставить какой-нибудь из антивирусов, он будет смотреть на разрешения вместо них :) Ну и кроме того, найти в маркете левое приложение довольно сложно, они обычно очень-очень низко в поиске, раскручиваться не успевают по понятным причинам. Хотя несколько жертв находят, конечно.

Но тем не менее, лично мне всё равно ближе такой подход, чем тотальное запрещение всего. В результате айфон практически ничего и не умеет, кроме игрушек. Потому что для серьезного мобильного приложения (вовсе не зловредного) может потребоваться и нахождение в фоне для мониторинга датчиков, и обработка звонков, смс, юссд (с последним, кстати, и в андроид большие проблемы) — да всё в комплексе. Но нет, кто-то решил, что оно не нужно :)

P.S. Да, верно, холивар — стоп.
Вот про вашу фразу — андроид не для совсем глупых людей. Вы ведь сами понимаете, что Adnroid можно купить за 150 долларов, а iPhone минимум за 600 долларов. Соответственно очень скоро будет простая ситуция, Android займет свои 60-70 процентов рынка. И вот тут самое интересное, где больше рынок, там больше мошенников, а особенно, если мошенникам изначально сказали, что можно делать все что угодно. За примерами далеко ходить не будем, СМС агрегаторы в России это багодатная среда где живут тысячи мошенников.
У меня есть знакомые, у которых телефоны за 100$, так вот они в маркет с трудом ходят, почти ничего оттуда не ставят, пользуются в основном только предустановленными программами. Если они попадают в маркет, то максимум поставят программу из топа какого-нибудь. А чтобы искать, мотать в конец — это вряд ли. Так что им ничего не грозит.

И, повторяю, постмодерация в маркете всё-таки есть, по жалобам. Может, в будущем гугл как-то ещё ответит на эту проблему, но, надеюсь, не запрещением и не премодерацией :)
А давайте, раз уж тут собрались технически подкованные люди, вспомним, как рапространялись вирусы. Приходит к девочке Маше смска от друга — ой такая классная игрушка, там 2 котика целуются.
Вот хотите смейтесь, но именно таким образом жена моего друга, на рабочий комп получила СМС блокиратор.
И вот тут уже не важно как глубоко в рейтинге закопан зловред.
Да, действительно. Единственный выход, который я вижу — это запретить получать сообщения от друзей. Странно, что Apple оставила такую возможность.

А если серьёзно, то премодерация программ не решает проблемы, ибо всё равно остаются сообщения от друзей, и качественные зловреды найдут дыру и своего лоха. Вот, например: www.itsec.ru/newstext.php?news_id=86694

Вот и получается, что проблема не решена, а неудобства, тем не менее, созданы.
Давайте я вам просто схему накидаю, она простая:
— Злодей создает программу app1
— публикует ее за 5 минут в маркете.
— получает свою 1000 жертв, наконец кто-то пишет письмо с жалобой
— приложение удаляют
— злодей это видит и создает программу app2
— публикует ее за 5 минут в маркете
— получает свою 1000 жертв
— далее по кругу

Я ведь сразу сказал есть решение — составить список разрешений, все приложения требующие это разрешение уходят на принудительную ручную модерацию.
Значит, не такая простая и выгодная, если не реализуется сплошь и рядом. Вполне работает постмодерация, и платное обучение лохов. Один раз отправив смс, в следующий раз будет смотреть на разрешения.

Я понимаю, вы привыкли к ограничениям, может, у вас у самого iPhone, но это не значит, что под установленными кем-то ограничениями хотят жить другие. Не надо их оправдывать, всё само более менее регулируется. Зато сколько полезных программ отсутствуют на ограниченных платформах, вот о чем действительно стоит жалеть.
Очень интересно это какой такой полезной программы нет на ограниченных платформах. Приведите, пожалуйста, пример.
Да запросто, вот этой программы нет, и быть не может. Потому что для нормальной реализации нужна работа в фоне, поддержка скриптовых языков, отслеживание исходящих звонков и смс, и виджеты (знаете, что такое виджеты?)
Я ведь изначально предложил не скатываться в холивар.

Работа в фоне — нужна, кто бы спорил.

Но вы ведь как разумный человек понимаете, что дав этой программе следить за вашими звонками вы добровольно отдаете себя в руки разработчика, он захотел изпользует ваши звонки для баланса, захотел скинул себе на сервер всю вашу историю звонков и смсок. Сегодня он добрый, замечательный учтивый, а завтра один из его админов слил базу на черном рынке.
Ну разумеется. Вы вообще в руках других людей, эппл знает все ваши контакты, и админы там могут быть не всегда довольны работой. Eсли вы зарегистрированы вконтактике или фейсбуке, то о вас вообще уже многое известно. А уж когда вы едите в кафе, ваша жизнь вообще целиком и полностью в руках их повара. Вас не беспокоит, что повара имеют совершенно прямой доступ к вашим внутренним органам? :)

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

Именно пользователь должен определять приемлемый для него баланс риска и удобства. А тут всё решили за него. Впрочем, некоторых это устраивает.

Вы правда не понимаете разницы между админы Apple и Android знают ваши контакты vs непонятная контора «Рога и копыта» собирает детализацию ваших звонков и хранит у себя с непонятной целью?

Вы же не сможете никак определить слили они к себе на сервак историю ваших звонков и смсок, даже если антивирус на Android будет фильтровать весь исходящий траффик, то как он узнает что передали в шифрованом траффике?
Вообще я поднял этот вопрос не для того чтобы сравнивать 2 операционки, поднимая холивар. Мне очень интересен только один пункт, который я озвучил — то, что программа которую ты установил может за тобой свободно шпоинить, это вообще никого не беспокоит?
Кого-то беспокоит, а кого-то нет, за всех не сказать. Некоторые даже ставят софт который автоматически записывает все звонки. С одной стороны эти записи могут слиться куда угодно, а с другой — довольно приятная функция.
у меня волосы дыбом встают

Представляю, как вы их будете рвать, когда вам понадобится на iOS такая возможность))
Я с вами где-то согласен. Но когда что-то нужно, то хорошо когда оно есть. Теоретически можно закодить даже чтоб вам и счет автоматически пополняло. Вся суть в том, доверяете ли вы приложению или нет, устанавливая его. Как уже писали в комментариях — под десктоп у вредителя куда больше возможностей накодить пакость. Ну а так да, социальную инженерию никто не отменял.
Я тут читаю такие странные комментарии и вопросы в них, как-будто никто не знает о существовании разрешений в приложениях… И что пользователь может их предоставлять или не предоставлять… О_о
Я бы с вами согласился, но есть 2 момента. Первый это необходимость в отслеживании звонков пользователя, на мой взгляд, достаточна редка. Второй момент, это практика, которая показывает, что пользователи тупо жмут согласен, особенно дети, не особо задумываясь, для чего приложение просит такие разрешения.

Как вариант компромисный можно было сделать принудительную ручную проверку приложений, которые просят права на доступ к конфедициальным данным, входящие, исходящие звонки и смски смело можно к ним отнести.
>> Первый это необходимость в отслеживании звонков пользователя, на мой взгляд, достаточна редка.

Увы, вы не правы. Например, программы проигрыватели-музыки должны отслеживать звонки, чтобы ставится на паузу. Почему это за них не делает система — вопрос десятый. Многие игры ради этого же мониторят статус звонка (есть или нет). Ну и т.д. В итоге — мы все под колпаком у Мюллера. Или фильтруем опять же сторонней программой, которая по определению вне контроля — и может сливать всё, что хочет, куда хочет.
А уж сколько программ желают знать координаты и ходить в инет показывать вам рекламу — проще перечислить те, которые это не хотят. Многие из них сразу предустановленны в конкретную систему от конкретного производителя. И тут или сторонние фильтры, или доверчивость.
По поводу ставиться на паузу, разве в Android нет оповещения операционной системой, что надо поставить на паузу? В IOS это реализовано без необходимости узнавать кто конкртено звонит, кто-то звонит и ладно, значит надо поставить программу на паузу.
А в андроид это скрыто за одним разрешением (read_phone_state). И если оно тебе дано, можешь благородно просто ставить паузу. А можешь — смотреть, кто звонит. Пользователь разрешил. Причём за этим же разрешением спрятан доступ к имеи. То есть любое приложение, которому нужна привязка к телефону, сразу просит право на лево на доступ к вашим входящим звонкам.
И большинство, судя по комментариям, считает это абсолютно нормальным. Получается любая игрушка, претендующая на удобство (ведь это очень удобно поставить игру на паузу во время разговора), может спокойно стать шпионом? Это же просто манна небесная для вредителей, сделал бесплатную копию ангри бердс, ее массово качают, а вредитель без палева сидит и все данные собирает, ведь разрешение он у пользователя попросил якобы для того, что бы ставить на паузу.
Может все же вы ошибаетесь и не так все плохо?
Беда в том, что разрешения в андроиде пакетные, и пользователь может или ВСЁ разрешить, или отказаться ставить программу. Поэтому чаще всего запрошенные разрешения принимаются скопом. Вот если бы можно было сказать — да, вот это и это можно, а вот это — нафиг!
Правда, есть сторонние проги, которые фильтруют эти «разрешённые» разрешения и позволяют программе, которая (например) хочет считать мои контакты, поставиться и даже работать, вот только запрос контактов у неё будет выдавать null. Но в системе этого нет — и это главный просчёт системы разрешения андроида. Или разреши всё, что программа хочет (тут список на 3 экрана), или не ставь эту программу. Причём часто разрешения слишком глобальные и ради одной буквально вызванной в коде функции приложение требует READ_CONTACTS или RECEIVE_SMS.
Да, с этим полностью согласен. У меня, кстати, на одной из прошивок вроде есть такая софтинка, на MIUI, вроде, типа фаервола по разрешениям))
MIUI и Cyanogen дают доступ к управлению правами, можно отозвать любое разрешение у приложения, тогда система его не даст при запросе. MIUI ещё молодец, при попытке фоновой отправки смс, выкидывает страшное окно с таймером, в течение которого можно разрешить отправку. Помогает от всяких зловредов, которые скачиваются по каждому второму рекламному баннеру adMob.
Где описание «обработка исходящих сообщений» есть строчка:
ContentResolver contentResolver = getBaseContext().getContentResolver();
Хочу сделать что-то подобное, но, насколько понял из различных источников, getBaseContext() работает только в активити. Как это обойти?
Sign up to leave a comment.

Articles