【问题标题】:Unable to share video's URL on Facebook via Android Intent.ACTION_SEND无法通过 Android Intent 在 Facebook 上分享视频的 URL。ACTION_SEND
【发布时间】:2011-07-15 14:43:09
【问题描述】:

我需要以编程方式共享视频资源的 URL。 URL 示例为http://flash.video.worldnow.com/kold/KOLD_20110714204221200AA.mp4

我为此使用 Intent.ACTION_SEND:

Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Test subject");
sendIntent.putExtra(Intent.EXTRA_TEXT, "http://flash.video.worldnow.com/kold/KOLD_20110714204221200AA.mp4");
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent,
                "Share URL"));

Facebook android 应用程序无法处理 URL 并显示以下错误:

"flash 对象必须具有 'swfsrc' 和 'imgsrc' 属性"

如何避免错误?如何将所需属性放入“text/plain”消息中?

【问题讨论】:

    标签: android facebook url video share


    【解决方案1】:

    经过几个小时的尝试,了解如何让它在 facebook、youtube、instagram 和 whatsapp 上上传和分享视频。这是对我有用的代码。将录制的视频从您的应用程序上传到社交媒体应用程序

    在处理视频并在内容中指定 MediaStore.Video.Media.Data 时尝试使用 ContentValues。

    ContentValues content = new ContentValues(4);
            content.put(Video.VideoColumns.DATE_ADDED,
            System.currentTimeMillis() / 1000);
            content.put(Video.Media.MIME_TYPE, "video/mp4");
            content.put(MediaStore.Video.Media.DATA, "your_path_to_video");
            ContentResolver resolver = getBaseContext().getContentResolver();
            Uri uri = resolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, content);
    
            Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
            sharingIntent.setType("video/*");
            sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"Title");
            sharingIntent.putExtra(android.content.Intent.EXTRA_STREAM,uri);
            startActivity(Intent.createChooser(sharingIntent,"share:")); `
    

    【讨论】:

      【解决方案2】:

      我查看了 Facebook 应用程序源 (ShareLinkActivity) 并没有发现任何添加必填字段来共享请求的可能性。仅使用意图额外参数 Intent.EXTRA_TEXT 的内容。

      【讨论】:

        【解决方案3】:

        看看这个页面here. 看起来它想要将 swfsrc 和 imgsrc 编码在 JSON 编码的数组中。希望这会有所帮助。

        【讨论】:

        • 感谢您的回答,但我不使用 JSON 请求。我需要使用常见的 Android 功能进行发送(即 Intent.ACTION_SEND)。在这种情况下,任何社交客户端(例如 Facebook、Twitter 等)都可以处理相同的 Intent,也可以通过 SMS、MMS 和电子邮件发送。我需要找到一种方法如何将上述 Facebook 字段所需的内容放入简单的短信中并通过 Intent 分享。
        • 您可以将 JSON 编码的数组作为额外文本放入意图中!对于 Facebook,流附件是定义帖子的结构化数据数组!
        • Content Intent.EXTRA_TEXT 在我的情况下不能是 JSON。此文本对于在 Twitter 上共享也应该仍然有效。应该使用另一个额外的参数名称来将附件放入意图额外?我尝试将其命名为“附件”但没有成功: sendIntent.putExtra("attachment", "{\"media\":[{\"type\": \"flash\",\"swfsrc\ ":\"" + "flash.video.worldnow.com/kold/KOLD_20110718232729103AC.mp4"; + "\", \"imgsrc\":\"icanhascheezburger.files.wordpress.com/2009/04/...\" }]}");仅供参考:参数名称 Intent.EXTRA_TEXT 也被尝试过,它也被 Facebook 的 ShareUrlActivity 忽略
        【解决方案4】:

        我搜索了将近 7 个小时,以下是唯一对我有效的解决方案

         File filePath = filesList[position]; 
                    Intent shareIntent = new Intent();
                    shareIntent.setAction(Intent.ACTION_SEND);
                    shareIntent.putExtra(Intent.EXTRA_TEXT, "Text");
                    shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(filesList[position].getAbsolutePath())));  //optional//use this when you want to send an image
                    shareIntent.setType("video/mp4");
                    shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                    startActivity(Intent.createChooser(shareIntent, "send"));
        

        【讨论】:

          猜你喜欢
          • 2012-04-19
          • 1970-01-01
          • 2014-08-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-18
          相关资源
          最近更新 更多