至少在6.0和7.0系統應用程序com.android.phone
負責存儲由其他應用程序發送的消息。不幸的是,這個功能被一些製造商打破了,這就是爲什麼我們沒有看到發送的消息。
它在AVD上工作。請參閱com.android.internal.telephony.SMSDispatcher
中的方法persistSentMessageIfRequired()。
只有這個應用程序或選定的默認短信應用程序對SMS內容提供商具有寫入權限。當您使用短信應用程序發送它時,它直接呼叫insert()
。當您在您的應用中使用SmsManager
時,系統應用com.android.phone
會以某種方式得到通知,執行發送並存儲發送的消息。短信發送後
at android.os.Handler.obtainMessage(Handler.java:293)
at com.android.internal.telephony.gsm.GsmSMSDispatcher.sendSmsByPstn(GsmSMSDispatcher.java:291)
at com.android.internal.telephony.gsm.GsmSMSDispatcher.sendSms(GsmSMSDispatcher.java:274)
at com.android.internal.telephony.SMSDispatcher.sendRawPdu(SMSDispatcher.java:999)
at com.android.internal.telephony.gsm.GsmSMSDispatcher.sendText(GsmSMSDispatcher.java:198)
at com.android.internal.telephony.ImsSMSDispatcher.sendText(ImsSMSDispatcher.java:206)
at com.android.internal.telephony.IccSmsInterfaceManager.sendTextInternal(IccSmsInterfaceManager.java:452)
at com.android.internal.telephony.IccSmsInterfaceManager.sendText(IccSmsInterfaceManager.java:393)
at com.android.internal.telephony.UiccSmsController.sendTextForSubscriber(UiccSmsController.java:136)
at com.android.internal.telephony.ISms$Stub.onTransact(ISms.java:201)
at android.os.Binder.execTransact(Binder.java:565)
,應用程序職位Handler
消息本身:這裏是調用堆棧(我沒有進一步挖掘)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1343)
at com.android.providers.telephony.SmsProvider.insertInner(SmsProvider.java:618)
at com.android.providers.telephony.SmsProvider.insert(SmsProvider.java:442)
at android.content.ContentProvider$Transport.insert(ContentProvider.java:264)
at android.content.ContentResolver.insert(ContentResolver.java:1274)
at com.android.internal.telephony.SMSDispatcher$SmsTracker.persistSentMessageIfRequired(SMSDispatcher.java:1445)
at com.android.internal.telephony.SMSDispatcher$SmsTracker.persistOrUpdateMessage(SMSDispatcher.java:1476)
at com.android.internal.telephony.SMSDispatcher$SmsTracker.onSent(SMSDispatcher.java:1537)
at com.android.internal.telephony.SMSDispatcher.handleSendComplete(SMSDispatcher.java:638)
at com.android.internal.telephony.SMSDispatcher.handleMessage(SMSDispatcher.java:274)
at com.android.internal.telephony.gsm.GsmSMSDispatcher.handleMessage(GsmSMSDispatcher.java:108)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
我已經探討了選擇,但我會喜歡使用內部的「SENT」文件夾...因此,即使用戶可以使用我的應用程序,他的消息仍然可以在內置的消息應用程序中看到。 – st0le 2010-07-06 04:04:37
我不能使用ACTION_SENDTO,它必須使用我的GUI ...還有我的應用程序支持的其他功能... – st0le 2010-07-06 04:19:15
@ st0le:Android中沒有單個「內置消息應用程序」。 HTC Sense有一個。 MOTOBLUR有一個。其他OEM層(例如索尼愛立信的Rachael)可能有他們的。此外,還有一個屬於開源項目的組件,它將顯示在Google體驗設備上(例如Nexus One)。 – CommonsWare 2010-07-06 10:59:32