2009-12-30 86 views
12

Tôi có một ứng dụng cho phép người dùng gửi tin nhắn sms. Hoạt động tốt khi có thông báo < 160 ký tự. Sau đó, mọi thứ hoạt động kém hoàn hảo hơn. Có vẻ như có một vài tùy chọn ở đây:Gửi tin nhắn sms dài

  1. Tự động chia thư thành nhiều SMS, gửi từng phần dưới dạng SMS riêng.
  2. Sử dụng chức năng gửi SMS nhiều phần (sendMultipartTextMessage()).
  3. Gửi tin nhắn dưới dạng tin nhắn MMS (sendDataMessage()?).

Dưới đây là người mới mất của tôi vào nó:

1) tốt nhất được hỗ trợ trên các tàu sân bay. Người dùng có thể phát điên rằng bạn chỉ tốn tiền cho họ N tin nhắn riêng biệt, thay vì chuyển đổi sang MMS hoặc một cái gì đó.

2) không chắc chắn nếu điều này được hỗ trợ bởi các mạng di động khác nhau và đọc nó sau khi tin nhắn lớn hơn 3 * 160 ký tự, được chuyển đổi sang MMS bằng ứng dụng SMS khác nhau - có thể tránh xa điều này.

3) không chắc chắn cách thực hiện việc này và điện thoại cũ có thể không hỗ trợ MMS. Để gửi MMS bằng SDK Android, chúng tôi có sử dụng phương thức SmsManager.sendDataMessage() không?

Cảm ơn

+0

Tôi đang làm điều gì đó tương tự TẠI ĐÂY !!! http://stackoverflow.com/questions/14452808/sending-and-receiving-mms-in-android – toobsco42

Trả lời

1

dường như là tùy chọn đầu tiên là hầu hết các điện thoại di động làm theo mặc định. sms tin nhắn bằng cách thiết kế chỉ có thể gửi một số tiền nhất định của nhân vật (160 probbaly), chỉ cần thông báo cho người dùng rằng tin nhắn là quá lớn và nếu anh ta vẫn muốn gửi nó anyway (thông báo cũng có bao nhiêu sms sẽ được tổng số).

đối với MMS và nhiều phần như bạn đã nói không phải mọi nhà cung cấp dịch vụ đều hỗ trợ nó, vì vậy chúng dường như không phải là lựa chọn tốt nhất.

EDIT: như đối với như thế nào MMS làm việc trên android-sdk kiểm tra chủ đề này ra: Android SDK MMS

+1

Tôi đồng ý. Cảnh báo thông báo rằng thư quá dài và sẽ phải được gửi dưới dạng tin nhắn văn bản n có tùy chọn chấp nhận/hủy có vẻ như là lựa chọn tốt nhất cho tôi. –

+0

Ok có ý nghĩa, cảm ơn tất cả. – Mark

+2

Bạn ở quốc gia nào? Tôi sẽ ngạc nhiên khi biết các nhà cung cấp dịch vụ không hỗ trợ tin nhắn SMS nhiều phần. Tôi sống ở Anh và đã gần mười năm kể từ lần cuối tôi có điện thoại không hiểu nhiều SMS. Tôi sẽ nghi ngờ rằng nhiều điện thoại thông thường chuyển đổi tin nhắn SMS dài thành một MMS (ví dụ ở đây tôi nhận được tin nhắn SMS miễn phí, nhưng MMS chi phí cho tôi tiền để gửi). –

32

này là khá một bài cũ nhưng nó cao lên trên Google khi tìm kiếm sms nhiều phần dữ liệu Android, vì vậy có thể nó sẽ giúp người .

Về phần 1 và 2, điều này cũng khá giống nhau. Để sử dụng sendMultipartTextMessage, bạn cần phải chia nhỏ thông điệp dài thành một ArrayList của Strings. Sau đó, nó sẽ gửi nhiều tin nhắn SMS nếu cần. Trong ngắn hạn:

SmsManager sms = SmsManager.getDefault(); 
ArrayList<String> parts = sms.divideMessage(longMessage); 
sms.sendMultipartTextMessage(phoneNumber, null, parts, null, null); 

Phần 3: MMS không phải là một tùy chọn, vì nó đã được chỉ ra. Các khoản phí và tất cả.

+0

Tôi vừa thử giải pháp của bạn: nó không hoạt động, sự kiện không có lỗi trong nhật ký, bất kỳ đề xuất nào? Tks – hungson175

+0

Ah, xin lỗi, tôi đã điền sai số :). Các giải pháp làm việc độc đáo! Tks – hungson175

+0

Một số nhà cung cấp dịch vụ (điều này xảy ra với Sprint trên CDMA) sửa đổi Android rằng họ không lắp ráp lại tin nhắn! Đây thực sự là một vấn đề chúng ta phải giải quyết. Và giải pháp không phải là tầm thường vì tôi phải kiểm tra xem thông điệp được phân đoạn như thế nào. – allprog

-1

Tôi khuyên bạn nên sử dụng tùy chọn 2 khi bạn đang làm việc trên thiết bị cầm tay dựa trên Android của GSM.

Thiết bị di động dựa trên GSM sẽ chăm sóc phân đoạn trong đó chia nhỏ thông điệp thành nhiều phần để gửi trong thực hiện và cũng có thể ghép các thông điệp nhiều phần vào một tin nhắn khi nhận.

Nếu bạn có phương thức xử lý tin nhắn văn bản, theo mặc định, hãy sử dụng các tùy chọn của manager.divideMessage vì nó sẽ hoạt động ngay cả khi các phân đoạn tin nhắn được yêu cầu chỉ có 1 trong số.

Tôi không nghĩ bạn nên gặp sự cố khi gửi thư bằng tùy chọn 2 và nó cũng sẽ đảm bảo rằng người nhận nhận được thư dưới dạng một thư. Khác, chúng tôi cần phải viết ngăn xếp giao thức của riêng bạn, nơi bạn viết số tham chiếu và số lượng thông báo cho người nhận để hiểu và tạo lại thông báo đầy đủ; mà không phải là rất khó khăn. Chúng ta có thể sử dụng các mảng byte với các phần đầu và các thông báo có thể được gửi dưới dạng mã hóa base64.

Ngoài ra tôi không biết nhiều về các giới hạn mà nhà cung cấp thực thi trên số lượng phân đoạn trong thông điệp nhiều phần; dựa trên thử nghiệm của tôi, tôi có thể gửi và nhận các phân đoạn 160 * 8 đúng cách. Dựa trên các tiêu chuẩn GSM, các phân đoạn có thể tối đa 255 nhưng số lượng đó có thể phụ thuộc vào việc triển khai nhà cung cấp dịch vụ.

+0

Android hỗ trợ chia tin nhắn SMS dài thành nhiều phần và quản lý việc gửi tin nhắn mulit-part đã nói trong SMS api. – Phil

Các vấn đề liên quan