我想通过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应用程序不会返回任何数据,你想要的也不可能。