当我将内容共享到Whatsapp时,它会返回到共享页面并通知“共享失败,请重试”
我的代码
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;
还有我的logcat
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
这就是我的方法。
private fun openShareDialog(iC: Context, //
iPath: String)
{
MediaScannerConnection.scanFile( //
iC.applicationContext, //
arrayOf(iPath), null //
) { _, iUri ->
var shareIntent = Intent(Intent.ACTION_SEND).apply {
putExtra(Intent.EXTRA_STREAM, iUri)
type = "image/*"
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
putExtra(Intent.EXTRA_TEXT, iC.getString(R.string.screenshot_sharing_text))
}
shareIntent = Intent.createChooser(shareIntent, iC.resources.getText(R.string.send_to)) //
.apply {
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}
iC.startActivity(shareIntent)
}
}
这既适用于图像共享,也适用于视频共享(只是不要忘记将类型更改为(例如)视频)。
如果需要将共享用作挂起的意图(例如作为通知中的操作按钮),那么可以使用此类
它是适用的
class ShareScreenshotService : IntentService(SHARE_VIDEO_RECORD_SERVICE)
{
override fun onCreate()
{
super.onCreate()
startService(Intent(this, ShareScreenshotService::class.java))
}
override fun onHandleIntent(intent: Intent?)
{
if (intent != //
null && intent.hasExtra(EXTRA_SHARE_VIDEO_RECORD_PATH))
{
val path = intent.getStringExtra(EXTRA_SHARE_VIDEO_RECORD_PATH)
Logger.log(Log.ERROR, TAG, path!!)
openShareDialog(this, path)
PushNotificationManager.getInstance(this).getVideoRecordingNotificator(this).closeNotification()
}
}
private fun openShareDialog(iC: Context, //
iPath: String)
{
MediaScannerConnection.scanFile( //
iC.applicationContext, //
arrayOf(iPath), null //
) { _, iUri ->
var shareIntent = Intent(Intent.ACTION_SEND).apply {
putExtra(Intent.EXTRA_STREAM, iUri)
type = "image/*"
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
putExtra(Intent.EXTRA_TEXT, iC.getString(R.string._screenshot_sharing_text))
}
shareIntent = Intent.createChooser(shareIntent, iC.resources.getText(R.string._send_to)) //
.apply {
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}
iC.startActivity(shareIntent)
}
}
companion object
{
private val TAG = ShareScreenshotService::class.java.simpleName
private const val SHARE_VIDEO_RECORD_SERVICE_REQUEST_CODE = 3
const val EXTRA_SHARE_VIDEO_RECORD_PATH = "_extra_share_video_record_path"
const val SHARE_VIDEO_RECORD_SERVICE = "_share_video_record_service"
@JvmStatic
fun pendingIntent(context: Context, //
iPath: String): PendingIntent
{
val intent = Intent(context, ShareScreenshotService::class.java)
intent.putExtra(EXTRA_SHARE_VIDEO_RECORD_PATH, iPath)
return PendingIntent.getService( //
context, //
SHARE_VIDEO_RECORD_SERVICE_REQUEST_CODE, //
intent, //
PendingIntent.FLAG_UPDATE_CURRENT //
)
}
}
}
用法
通知生成器。addAction(R.drawable.ic\u share,ic.getString(R.string.share),ShareScreenshotService。悬而未决的内容(iC,iImagePath))
另外不要忘记将Service
添加到Manifest文件
share.set键入("text/平原");
然后重试
有同样的问题-解决方案是定义MIME类型:当试图与文本和附加的图像设置共享意图时。setType(“*/*”)可以正常工作,但在如上所述仅共享文本时会失败。
解决方案:如果只共享文本集<代码>共享内容。setType(“文本/普通”)
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();
}
}
长按按钮时,我正在尝试共享声音文件。这是我的代码: 然而,当我长按按钮时,共享菜单出现,但我只能与WhatsApp共享声音。任何其他应用程序都无法运行。(Gmail给了我一条消息,说“不能附加空文件”。声音是.ogg格式的,我试着把它转换成.wav,但它给了我同样的问题。我做错了什么?
我使用的方法是:https://stackoverflow.com/a/25796908/3437433 在桌面上,起源链接被替换。然后Safari会显示关于错误协议的错误页面。 在移动端,正确的页面是由原点链接打开的,但也会出现“url错误,无法打开页面”的提示。我可以关闭警报,可以单击“发送”按钮,但是页面打开,而不是提示登录whatsapp并重定向到聊天。 有没有人知道这是怎么回事,能不能修
我正在开发一个应用程序,它必须通过whatsapp共享mp3文件。 我现在的代码如下: 例如,我可以通过Gmail成功共享,但通过whatsapp无法实现。这是我的代码的问题还是whatsapp不允许你共享mp3文件? 提前感谢!
我这样试过: 但这不起作用,WhatsApp告诉我再试一次。 我在这个stackoverflow问题的答案中也发现了这种方式: 在我的情况下,我需要写什么来代替这个 我的声音。mp3文件位于原始文件夹中
问题内容: 我已经看到您可以指定如果ajax请求失败通常要做什么,是否可以让它在某种循环中重试,以便它在停止之前尝试至少x次?我以前使用过此代码: 这将适用于所有AJAX请求(如果我输入错了,请纠正我)。 我想做这样的事情: 这行得通吗?甚至更好:这是正确的方法吗?我会将重试包装在计数系统中,以便不会无限重试。在我的应用程序中,十分之九会正常工作,但是我经常与之交互的API之一有时会返回错误。 任
我最近将Eclipse升级到Kepler版本,不得不重新安装所有插件。我在subversion界面上遇到了麻烦。它抱怨我的客户太老了,但我只有Subversion1.8.1。 我得到的信息是: 共享项目失败。不支持的工作副本格式SVN:此客户端太旧,无法使用'/local/projects/devel'(格式31)中的工作副本。您需要获得一个更新的Subversion客户端。有关详细信息,请参阅