通过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

你想要实现的是你共享的特定应用程序(在你的案例中是WhatsApp)必须在他们的应用程序中进行编码,如果他们不实现这一功能,你就无法实现。Android上的每一个startActivityForResult都是如此。如果应用程序没有编码为返回数据,那就意味着你不能拥有这些数据。

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

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

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

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

D/whatsapp(13522):请求代码:1结果代码:0意图:空

这意味着what's应用程序不会返回任何数据,你想要的也不可能。

最新更新