2013-10-19 94 views
1

我知道如何從Android發送短信。這很簡單:DELPHI XE5如何通過ANDROID傳遞通知發送短信

var 
    smsTo: JString; 
    smsManager: JSmsManager; 
begin 
    smsManager := TJSmsManager.JavaClass.getDefault; 
    smsTo := StringToJString('number_xxx'); 
    smsManager.sendTextMessage(smsTo, nil, StringToJString('Test SMS'), nil, nil); 

但問題是:如何交付收件人發送短信? Delphi XE5有可能嗎?

感謝您的回答。 喬治

+1

你見過文檔嗎? http://developer.android.com/reference/android/telephony/gsm/SmsManager.html#sendTextMessage%28java.lang.String,%20java.lang.String,%20java.lang.String,%20android.app.PendingIntent ,%20android.app.PendingIntent%29 – Pateman

+1

這可能也有幫助:http://stackoverflow.com/questions/18891486/broadcast-receivers-in-delphi-xe5-android?rq=1 – Pateman

+0

@Pateman:也許你可以給你一個簡短的摘要和一些從你的鏈接複製粘貼到相關部分。然後我們可以投票回答。這些外部鏈接可能在一段時間後消失... –

回答

1

Android's documentation

參數

  • destinationAddress地址將消息發送到
  • scAddress是服務中心的地址或無效使用當前默認SMSC
  • text的郵件正文發送
  • sentIntent如果不爲null此的PendingIntent當成功發送的消息是廣播,還是失敗。結果代碼將爲 Activity.RESULT_OK成功或其中之一: RESULT_ERROR_GENERIC_FAILURE RESULT_ERROR_RADIO_OFF RESULT_ERROR_NULL_PDU。基於每個應用程序的SMS控件檢查 sentIntent。如果sentIntent爲NULL,則將根據 檢查所有未知應用程序,從而在檢查期間導致發送較少數量的SMS發送到 。
  • deliveryIntent如果不是NULL,則在將郵件傳遞給收件人時將廣播PendingIntent。狀態 報告的原始pdu位於擴展數據(「pdu」)中。

您明顯缺少代碼中的最後兩個參數。

Here's如何在Java中做到這一點 - 它非常簡單,但Delphi對我們來說有點困難。看看答案here。最有意思的是the first link的答案。

基本上你需要使用JNI包裝器直接與Java類進行通信,因爲Delphi不公開這裏所需的功能 - 至少我沒有意識到任何事情。

祝你好運!