2011-01-05 190 views
5

嘿,我一直在製作一個需要發送短信的Android應用程序。下面是當前代碼我有:在Android中發送短信

public class getMessage extends Service { 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public void onStart(Intent intent, int startId) { 
    super.onStart(intent, startId); 

    client Phone = new client(); 


    String[] msg = Phone.getMsg(user[0],user[1]); 
    PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, getMessage.class), 0); 
    SmsManager man = SmsManager.getDefault(); 
    Log.e("GOT MESSAGE", msg[0]+ " : " +msg[1]); 
    man.sendTextMessage(msg[0], null, msg[1], pi, null); 
    Log.e("Message", "Sent the message?"); 
} 

現在,出於某種原因,文本消息不會發送使用此代碼,我不知道爲什麼。我希望有人能幫我找出爲什麼這封郵件不會發送。

沒有錯誤發生,沒有什麼會出現在日誌中(除​​了我自己在代碼中的日誌消息)。此外,清單確實有正確的標籤。

對此提出建議?

+0

FWIW,這是一個示例項目,但它來自一個活動,而不是服務:https://github.com/commonsguy/cw-advandroid/tree/master/SMS/Sender – CommonsWare 2011-01-05 23:22:36

+0

電話是什麼。 getMsg(用戶[0],用戶[1])返回?你有沒有在設備或模擬器上試過這個?另外,你的類名應該總是以大寫字母開頭(GetMessage而不是getMessage)。 – elevine 2011-01-05 23:22:48

+0

Phone.getMessage獲取它收到的消息...和getMessage是一種方法,而不是一個類,雖然我的客戶端類應該大寫... – D4N14L 2011-01-06 01:26:36

回答

2

嗯,現在,這是令人尷尬的。顯然,我這樣做的方式是正確的。只是我檢查的方式是否發送顯然是不正確的。

通過這樣的代碼發送時,它不會在手機上顯示爲已發送消息,而會被其他人接收。我只需要通過運行兩個模擬器來測試它。

感謝您的幫助!

+0

我正在做類似的事情! http://stackoverflow.com/questions/14452808/sending-and-receiving-mms-in-android – toobsco42 2013-01-22 07:52:32

3

您應該檢查您是否有權發送短信。

+1

我相信如果您沒有正確的權限,則應在日誌中顯示錯誤消息。 – 2011-01-06 00:19:41

+0

也許,我只是猜測,但我會先檢查一下。 – Ante 2011-01-06 00:42:07

+1

正如帖子底部所述,我在清單文件中擁有正確的權限。 (SEND_SMS的標籤) – D4N14L 2011-01-06 01:28:08

1

does this link help?它基本上覆蓋了發送和偵聽SMS消息的示例活動。

+0

不幸的是,沒有。我之前看到過這個鏈接,它基本上覆蓋了我已經完成的工作。儘管如此,感謝您的嘗試。 – D4N14L 2011-01-06 04:40:57

+0

我知道您說過您擁有正確的權限,但我認爲我讀了某處(現在無法找到它),您還需要添加READ_PHONE_STATE以發送SMS消息。再次,這只是我認爲我前一段時間閱讀的內容... – ekawas 2011-01-06 17:35:50

+0

另一件事,你如何測試這個?我注意到,當我在實際設備上測試時,日誌不是100%準確。嘗試使用模擬器進行測試並在Logcat中查找消息。 – ekawas 2011-01-10 14:41:03