当我将内容分享到 Whatsapp 时,它返回到分享页面,并显示 Toast 通知“分享失败,请重试”
my code
if (url.startsWith("share://")) {
Uri requestUrl = Uri.parse(url);
String pContent = requestUrl.toString().split("share://")[1];
Toast toast=Toast.makeText(getApplicationContext(),pContent, Toast.LENGTH_LONG);
toast.setMargin(50,50);
toast.show();
StringBuilder sb = new StringBuilder();
String [] parts = pContent.split("<br />");
for (int i = 0; i < parts.length; i++) {
String part = parts[i];
sb.append(part);
sb.append('\n');
}
Intent share = new Intent();
share.setAction(Intent.ACTION_SEND);
share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
share.putExtra(android.content.Intent.EXTRA_TEXT, (Serializable) sb);
share.setType("*/*");
try {
startActivity(Intent.createChooser(share, "Share On"));
} catch (android.content.ActivityNotFoundException ex) {
toast = Toast.makeText(getApplicationContext(), "whatsapp not installed", Toast.LENGTH_LONG);
toast.setMargin(50,50);
toast.show();
}
return true;
和我的日志猫
08-01 14:37:42.081 1472-1514/com.example.myactivity I/MaliEGL: [Mali]window_type=1, is_framebuffer=0, errnum = 0
08-01 14:37:42.081 1472-1514/com.example.myactivity I/MaliEGL: [Mali]surface->num_buffers=4, surface->num_frames=3, win_min_undequeued=1
08-01 14:37:42.081 1472-1514/com.example.myactivity I/MaliEGL: [Mali]max_allowed_dequeued_buffers=3
有同样的问题 - 解决方案是定义 MIME 类型:当尝试与文本和附加图像设置共享意图时sharingIntent.setType("*/*")
可以正常工作,但是当如上所述仅共享文本时会失败。
解决方案:如果仅共享文本集sharingIntent.setType("text/plain")
public void sendShareToWhatsAppIntent() {
//setup intent:
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
//setup image extra, if exists:
Bitmap picBitmap = getMyBitmap();
if (picBitmap != null) {
String url = MediaStore.Images.Media.insertImage(context.getContentResolver(), picBitmap, "", "");
sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(url));
sharingIntent.setType("*/*");
} else {
//if no picture, just text set - this MIME
sharingIntent.setType("text/plain");
}
//setup sharing message
String message = "My Message - hey whatsapp!"
sharingIntent.putExtra(Intent.EXTRA_TEXT, message.toString());
//target WhatsApp:
sharingIntent.setPackage("com.whatsapp");
if (sharingIntent.resolveActivity(context.getPackageManager()) != null) {
startActivity(sharingIntent);
} else {
Log.w(TAG, "sendShareIntent: cant resolve intent");
Toast.makeText(context, "whatsapp not installed", Toast.LENGTH_SHORT).show();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)