2010-07-30 37 views
12

Khi tôi khởi động ứng dụng SMS bằng các phương pháp sau đây - mọi thứ hoạt động tốt cho đến thời điểm gửi tin nhắn. Khi tôi gửi tin nhắn - nó không bao giờ điều hướng trở lại hoạt động ban đầu trừ khi tôi nhấn nút quay lại. Làm cách nào để tôi có thể bắt đầu hoạt động SMS và sau đó khi tin nhắn được gửi, hoạt động gốc sẽ hiển thị lại?Quay lại hoạt động sau khi hoàn thành hành động trong Android?

Đây là cách tôi gọi ứng dụng SMS với kết quả.

String message = getMessageString(); 
    Intent sendIntent = new Intent(Intent.ACTION_SENDTO); 
    sendIntent.setData(Uri.parse("sms:" + number)); 
    sendIntent.putExtra("sms_body", message); 
    startActivityForResult(sendIntent, INVITE_COMPLETED); 

Trả lời

23

Có thể. Chỉ cần thêm phần bổ sung sau đây vào mục đích của bạn:

sendIntent.putExtra("exit_on_sent", true); 
+0

tính năng này đã hoạt động đối với tôi ... – arjoan

+1

Không hoạt động với ứng dụng Hangout. – BoD

+0

Nó không gọi onActivityResult, nhưng nó quay trở lại ứng dụng người gọi. – Proverbio

1

Ngay khi hoạt động bạn đã bắt đầu kết thúc, phương thức onActivityResult() trong hoạt động đầu tiên của bạn được gọi. Đó là lý do tại sao bạn nên ghi đè lên onctctResult() trong hoạt động đầu tiên của bạn và xử lý ở đó các hoạt động đã hoàn thành.

+0

Tôi làm điều đó - tuy nhiên hoạt động gốc không được gọi sau khi SMS được gửi. Nó chỉ hiển thị chuỗi cuộc trò chuyện nhưng không điều hướng quay lại hoạt động gốc. – hwrdprkns

1

Bạn đã sai, có thể bạn không nhận thấy rằng bạn đã quay lại hoạt động gọi điện. Bạn phải cung cấp mã yêu cầu khi gọi một subactivity. INVITE_COMPLETED có vẻ hơi giống như nó có thể đại diện cho một mã kết quả. Mã kết quả như RESULT_OK và RESULT_CANCELED là các kết quả được xác định trước của lớp Activity. Nếu bạn sử dụng

startActivityForResult(intent, MY_REQUEST_CODE); 

sau đó bạn có thể ghi đè onActivityResult() và bắt rằng mã yêu cầu (đó là tự định nghĩa trong hoạt động ban đầu) ở đó. Đây là hình thức của nó:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    if (requestCode == MY_REQUEST_CODE) { 
     if (resultCode == RESULT_OK) { 
     // do something useful 
     } 
    } 
} 
+0

Có cách nào để biết tin nhắn đã được gửi chưa? Tôi đang làm điều đó và khi tôi nhấn nút quay lại từ hoạt động SMS, tôi luôn nhận được Activity.RESULT_CANCELLED làm resultCode, cho dù tôi có gửi SMS hay không. Có cách nào để bắt đầu hoạt động yêu cầu kết thúc sau khi gửi không? – karl

+0

@karl Xin chào, bạn có tìm thấy giải pháp cho vấn đề đó tôi gặp vấn đề tương tự và bị kẹt không, hãy giúp tôi –

+0

Không, tôi chưa bao giờ tìm được giải pháp. Đó là bốn năm trước, mặc dù, và Android đã thay đổi rất nhiều, vì vậy có thể có một giải pháp bây giờ mà không tồn tại sau đó. – karl

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