通过whatsapp分享

时间:2014-10-01 13:59:29

标签: android whatsapp

我想通过我的应用程序中的whatsapp发送短信。

当我通过whatsapp发送请求分享时,我不知道接收者是谁,我被定向到联系人页面。

我如何知道选择了哪个联系人?

这是我用来分享的代码:

public void clickHandler(View view) {

PackageManager pm=getPackageManager();
try {

    Intent waIntent = new Intent(Intent.ACTION_SEND);
    waIntent.setType("text/plain");
    String text = "YOUR TEXT HERE";

    PackageInfo info=pm.getPackageInfo("com.whatsapp",PackageManager.GET_META_DATA);
    //Check if package exists or not. If not then code 
    //in catch block will be called
    waIntent.setPackage("com.whatsapp");

        waIntent.putExtra(Intent.EXTRA_TEXT, text);
        startActivityForResult(Intent.createChooser(waIntent, "Share with"),1);

   } catch (NameNotFoundException e) {
        Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT)
                .show();
   }  

}

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

    Log.d("whatsapp","requestCode:"+requestCode + " resultCode:"+resultCode+ " intent:"+data);
}

10-01 16:57:46.910: D/whatsapp(13522): requestCode:1 resultCode:0 intent:null

1 个答案:

答案 0 :(得分:2)

您要实现的目标是您正在分享的特定应用(WhatsApp在您的案例中)必须在其应用中编码,如果他们没有实现此功能,您将无法实现它。对于Android上的每个startActivityForResult都是如此。如果应用程序未编码以返回数据,则表示您无法获得该数据。

要检查是否有任何应用程序实现,最好的办法是调查它返回的对象的内容。

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

在上面的代码中的代码中放置一个断点,并在调试会话中检查data参数的内容。检查Bundle返回的getExtras()内的所有键和值,还要检查Intent操作的内容。

正如你在问题上指出的那样

  

D / whatsapp(13522):requestCode:1 resultCode:0 intent:null

这意味着什么应用程序不会返回任何数据,也不可能。