2011-12-21 18 views
15

Tôi muốn ứng dụng của mình nhắc người dùng tạo liên hệ mới thông qua giao diện Danh bạ chuẩn trên Android. Sau đó, tôi muốn có thể đọc thông tin từ người liên hệ mới được tạo.Thêm mục đích liên hệ không trả lại dữ liệu trênActivityResult theo ICS

Mã của tôi dựa trên "Thêm liên hệ mới" từ trang web this.

Intent intent = new Intent(Intent.ACTION_INSERT); 
intent.setType(Contacts.CONTENT_TYPE); 
intent.putExtra(ContactsContract.Intents.Insert.PHONE, number); 
startActivityForResult(intent, PICK_CONTACT); 

và sau đó

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Intent intent = new Intent(this, Foo.class); 
    Uri uri = data.getData(); //I get nullpointer here on ICS 
    intent.putExtra("contact", ContactAccessor.getInstance().loadContact(this, uri)); 
    startActivity(intent); 
    finish(); 
} 

Mã này chạy tốt trên Android 2.2 và 2.3. Nó bắt đầu ứng dụng danh bạ và cho phép người dùng nhập nội dung như tên và địa chỉ email và khi họ hoàn thành và nhấn "ok" hoặc "save" hoặc "what" nó trở lại ứng dụng của tôi và tôi có thể đọc nội dung họ đã nhập. Trên Android 4.0 (ICS) tuy nhiên nó không trở lại ứng dụng của tôi, khi người dùng hoàn tất việc tạo liên hệ. Và khi tôi thoát khỏi giao diện liên lạc (thông qua nút quay lại), nó không bao gồm bất kỳ ý định nào với thông tin liên lạc.

Tôi nên sử dụng mục đích gì để có được hành vi tương tự trên ICS?

+0

Tôi đang gặp vấn đề tương tự :( –

+0

http://stackoverflow.com/questions/9551821/android-4-0-3-and-finish-activity Tôi gặp vấn đề tương tự. – user1247617

+0

của tôi vấn đề là nó hoạt động nếu tôi mở một hoạt động khác và quay trở lại hoạt động của cha mẹ trên onActivityResult() nhưng khi tôi cố gắng chụp ảnh bằng cách sử dụng intent onActivityResult() được gọi trước khi tôi chụp hoặc hủy sự kiện camera và sự cố này xảy ra trong android 4.03 (thử nghiệm trên htc me) –

Trả lời

15

Đối với Android 4.0.3 trở lên, bạn cần cung cấp một thêm ý định mới:

public static thức Chuỗi INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED = "finishActivityOnSaveCompleted";

intent.putExtra (INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED, true);

Tôi không có giải pháp cho Android 4.0 đến 4.0.2.

Bất kỳ ai?

+1

Điều này thật tuyệt vời! Cảm ơn bạn rất nhiều. Tôi vừa thử trên Galaxy Nexus chạy 4.0.4 và nó hoạt động như một sự quyến rũ! Verizon Galaxy Nexus ngu ngốc vẫn bị mắc kẹt trên 4.0.2 vì vậy sửa lỗi này vẫn không ' t làm việc, nhưng hy vọng Verizon sẽ cập nhật nó sớm. Cảm ơn một lần nữa! –

+1

Đã cứu tôi rất nhiều đau đầu, cảm ơn! Hóa ra đây là tài liệu, mặc dù tìm kiếm nơi để tìm trong tài liệu Android là tất nhiên đau đầu của riêng mình. http://developer.android.com/training/contacts-provider/modify-data.html trong "Thêm cờ điều hướng" – Groxx

+0

Điều này không hoạt động trên Android 4.4.2. Xin vui lòng chia sẻ nếu bạn có bất kỳ giải pháp hoặc biết những gì thay đổi. Thx – Sandra

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