如何使用Whatsapp的本地联系选择器从Whatsapp中选择联系地址?

Jun*_*dge 1 android contacts whatsapp

我正在尝试从我的应用程序中选择联系人的Whatsapp地址,但鉴于我的应用程序是Whatsapp的工具,我希望用户继续使用本机方式选择联系人,这样他们就不会有习惯一种新的做事方式,这对我们大多数人来说都很烦人.

我做了一些研究,我知道链接,如发送文本到特定联系人(whatsapp),通过WhatsApp发送消息,以及网站上的一些其他问题和答案,但他们不使用Whatsapp的联系人选择器.

希望你能帮忙.

Jun*_*dge 6

玩了很长一段时间后,我意识到我们可以启动Whatsapp的联系人选择器活动并收到结果,但不是在返回的uri(Android联系人选择器的方式)中,而是作为额外的.我想出了以下解决方案.

要启动Whatsapp的本机联系人选择器,我们从我们的活动中调用以下代码:

Intent intent = new Intent(Intent.ACTION_PICK);
    intent.setPackage("com.whatsapp");
    try{
        startActivityForResult(intent, REQUEST_CODE_PICK_WHATSAPP);
    } catch (Exception e) {
        Toast.makeText(MainActivity.this, R.string.notif_no_whatsapp, Toast.LENGTH_SHORT).show();  //no activity found to handle this intent means whatsapp is not installed
    }
Run Code Online (Sandbox Code Playgroud)

然后,内部活动的onActivityResult(...)方法:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);

    switch (requestCode) {
    case REQUEST_CODE_PICK_WHATSAPP:
        if(resultCode == RESULT_OK){
            if(intent.hasExtra("contact")){
                String address = intent.getStringExtra("contact");
                Log.d(TAG, "The selected Whatsapp address is: "+address);
            }
        }
        break;

    default:
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

希望它有助于制作更多与Whatsapp无缝集成的应用程序.