我想通过我的应用程序中的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
答案 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
这意味着什么应用程序不会返回任何数据,也不可能。