【问题标题】:Share via whatsapp通过whatsapp分享
【发布时间】:2014-10-01 13:59:28
【问题描述】:

我想通过我的应用程序中的 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与另一个用户分享一条信息,这个用户可能不是我的应用程序用户,如果是这种情况,我想当这个用户注册我的应用程序时,能够给他已经分享的内容。为此,我需要标记此用户
  • 如果你的 onActivityResult 没有触发,那么就没有办法检索它,因为 WhatsApp 没有为此编码。
  • Whatsapp 没有提及任何关于将消息发送给in their docs 的信息,所以我想他们没有。另外,想想如果他们这样做的后果:你会在哪里划清界限?只是联系人的名字还可以吗?他们的联系电话呢?电子邮件?等等。每个人都会对此有不同的看法,因此如果 Whatsapp 会像这样将任何数据暴露给“外人”(阅读:其他调用 Whatsapp 应用程序的应用程序),我会感到惊讶。

标签: android whatsapp


【解决方案1】:

您要实现的是您要共享的特定应用程序(在您的情况下为 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): requestCode:1 resultCode:0 intent:null

这意味着什么是应用程序没有返回任何数据,你想要什么是不可能的。

【讨论】:

    猜你喜欢
    • 2018-08-07
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多