2012-02-22 45 views
2

我想通過C2DM將收到的消息發送到手機SMS收件箱,並得出結論認爲這可能是因爲愚弄Android使C2DM成爲一款真正的短信,並讓它在其上發揮作用。將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消息應用程序忽略了與您的類似的欺騙it requires that the sender hold the BROADCAST_SMS permission,其中can only be held by firmware(或應用程序使用固件的簽名密鑰簽名)。

+0

謝謝你提供了一個非常有用的信息。某些意圖應該限制在操作系統上是非常有意義的。我有一個備份計劃,直接寫入SMS收件箱,我知道它是無證的,容易中斷,並且不大或不聰明。我的猜測是,這將繞過通知機制,因此消息將被保存,但不會引發UI通知。我想,證明這一點的唯一方法就是嘗試一下! – 2012-02-23 19:47:20

相關問題