2012-02-22 2 views
2

Я хотел был бы доставить сообщения, полученные через C2DM, в телефонные SMS-сообщения и пришел к выводу, что это может быть возможно, обманув Android в мысли, что C2DM - это подлинное SMS-сообщение, и пусть оно работает на нем ,Предоставление почтового ящика C2DM для SMS

Я проследил справедливую часть исходного кода Android, и ничего не происходит в стеке телефона до того, как умывается SMS_RECEIVED, что привело меня к мысли, что самый простой способ сделать это - создать PDU из полезной нагрузки c2DM и увольнять намерение SMS_RECEIVED, которое теоретически должно привести к тому, что стандартное приложение SMS будет потреблять его и записать его в папку входящих сообщений SMS.

Фрагмент кода ниже - это доказательство концепции. Я проверил код PDU на жесткий диск. PDU действителен и был сгенерирован с использованием утилиты.

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

String pdu = "07911326040000F0040B911346610089F60000208062917314080CC8F71D14969741F977FD07";     
byte[][] pdus = null; 

pdus = new byte[1][]; 
pdus[0] = hexStringToByteArray(pdu); 
Intent intent = new Intent("android.provider.Telephony.SMS_RECEIVED"); 
intent.putExtra("pdus", pdus); 
intent.putExtra("format", "3gpp"); 

MyAndroidAppActivity.this.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS"); 

Любая помощь или комментарии были бы высоко оценены!

ответ

0

Приложение AOSP Messaging игнорирует поддельные Intents как ваш, как it requires that the sender hold the BROADCAST_SMS permission, который can only be held by firmware (или приложения, подписанные с помощью ключа подписи прошивки).

+0

Благодарим вас за очень полезный и информативный пост. Совершенно очевидно, что определенные намерения должны быть ограничены ОС. У меня есть план резервного копирования, который должен напрямую записываться в папку «Входящие» SMS, которая, как я знаю, недокументирована, может сломаться и не является большой или умной. Я предполагаю, что это обходит механизм уведомления, поэтому сообщения будут сохранены, но никаких уведомлений пользовательского интерфейса не будет поднято. Я предполагаю, что единственный способ доказать это - попробовать! –

Смежные вопросы