2013-04-20 20 views
6

Tôi muốn mở hoạt động trò chuyện của ứng dụng nào là cmp=com.whatsapp/.Conversation từ ứng dụng của tôi.Làm cách nào để mở hoạt động trò chuyện của WhatsApp bằng dữ liệu liên hệ?

Tôi làm cách nào để thực hiện việc này? Tôi có số điện thoại liên lạc, id liên lạc, id liên hệ thô và cũng có uri ứng dụng cho một liên hệ cụ thể.

private void openWhatsApp(String id) { 

    Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("content://com.android.contacts/data/"+id)); 
    Log.v("ssssss", s); 
    i.setType("vnd.android.cursor.item/vnd.com.whatsapp.profile"); 
    i.setComponent(new ComponentName("com.whatsapp", ".Conversation")); 
    startActivity(i); 
} 


04-20 18:13:45.794: I/ActivityManager(1862): START 
{act=android.intent.action.VIEW 
dat=content://com.android.contacts/data/8269 
typ=vnd.android.cursor.item/vnd.com.whatsapp.profile 
cmp=com.whatsapp/.accountsync.ProfileActivity} from pid 32159 


04-20 18:42:11.317: I/ActivityManager(1862): START {flg=0x14000000 cmp=com.whatsapp/.Conversation (has extras)} from pid 1150 
+1

Thêm mô tả ngắn gọn và mã đã được cải thiện đáng kể câu hỏi này từ "Tôi muốn mã" tới "Tôi đã thử điều này, bạn có thể giúp gì không?" (tạo nên sự khác biệt lớn ở đây.) – Sam

+0

@Sam Cảm ơn bạn đã đề xuất. Tôi sẽ ghi nhớ điều này. –

+0

Không rõ bạn đang hỏi về điều gì. Mã có bắt đầu đúng ứng dụng không? (Các đầu ra logcat cho thấy nếu không.) Là nó bị rơi? Thứ gì khác? –

Trả lời

6
private void openWhatsApp(String id) { 

Cursor c = getSherlockActivity().getContentResolver().query(ContactsContract.Data.CONTENT_URI, 
     new String[] { ContactsContract.Contacts.Data._ID }, ContactsContract.Data.DATA1 + "=?", 
     new String[] { id }, null); 
c.moveToFirst(); 
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("content://com.android.contacts/data/" + c.getString(0))); 

startActivity(i); 
c.close(); 
} 

đâu id là những gì ứng dụng uri như [email protected]

+1

... làm thế nào để có được id. Tôi nghĩ rằng đây là id whats. Khi tôi sử dụng mã của bạn. tôi có một lỗi getSherlockActivity() .Tôi mới trong android vì vậy tôi không hiểu những gì là getherlocactivity và nơi nó được sử dụng. Tôi chỉ muốn gửi tin nhắn từ ứng dụng của tôi đến whatsup mà không cần mở whats up nó là có thể hay không – Mahi

+1

[email protected] là id ứng dụng là gì. Hoặc bạn có thể lấy nó từ cột 'data1' trong contacts.db. Không thể gửi tin nhắn từ ứng dụng của bạn đến whatsup mà không cần mở ứng dụng whats. –

+2

@MahiSingh tôi chỉ cần xóa getSherlockActivity() và hoạt động của nó hoàn hảo. – BeingMIAkashs

-1

Bạn chỉ có thể truy cập vào hồ sơ trò chuyện Watsapp nếu họ có nhà cung cấp nội dung cho nó, điều mà tôi chắc chắn họ sẽ không.

+0

có một số ứng dụng có thể thực hiện việc này. Vậy làm thế nào họ có thể làm được điều này? Bất kì lời đề nghị nào? –

+0

cũng có, bạn bằng cách nào đó có thể truy cập các tập tin tin nhắn trong thẻ sd nhưng ngay cả sau đó nó sẽ được mã hóa. – shiladitya

+0

Về mặt đạo đức, bạn không nên làm những gì bạn hỏi. – shiladitya

1

thử mã này:

String smsNumber="[email protected]"; 
Uri uri = Uri.parse("smsto:" + smsNumber); 
Intent i = new Intent(Intent.ACTION_SENDTO, uri); 
i.putExtra("sms_body", "Prakash Gajera"); 
i.setPackage("com.whatsapp"); 
startActivity(i); 
+0

Bạn cần contactId của số liên lạc, không thể sử dụng số sms. Vì vậy, nó sẽ giống như một cái gì đó [email protected] nơi 189202 là id của số liên lạc. Và điều đó chỉ khởi chạy hồ sơ liên hệ, WhatsApp vẫn bỏ qua sms_body và các giá trị EXTRA_TEXT khác. – Genc

0

Bạn có thể sử dụng ví dụ này

startActivity(new Intent(Intent.ACTION_VIEW, 
          Uri.parse(
            "https://api.whatsapp.com/send?phone=+628119xxx&text=I'm%20interested%20in%20your%20car%20for%20sale" 
          )));