Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook从Android Chooser上传照片失败_Android_Facebook - Fatal编程技术网

Facebook从Android Chooser上传照片失败

Facebook从Android Chooser上传照片失败,android,facebook,Android,Facebook,在我的应用程序中,我可以选择使用标准的Android共享机制共享照片。当我选择gmail或yahoo mail时,共享工作正常,图像显示在电子邮件正文中并发送到目的地。当我选择Facebook时,图像会显示在Facebook活动中,您可以在其中添加消息,但当我点击“完成”按钮时,上传过程开始,但总是失败 消息框的标题是:“Facebook上传失败”,消息本身是:“您的上传无法完成,因为我们无法访问您的照片。” 以下是用于共享的代码段: mShareIntent = new Intent(); m

在我的应用程序中,我可以选择使用标准的Android共享机制共享照片。当我选择gmail或yahoo mail时,共享工作正常,图像显示在电子邮件正文中并发送到目的地。当我选择Facebook时,图像会显示在Facebook活动中,您可以在其中添加消息,但当我点击“完成”按钮时,上传过程开始,但总是失败

消息框的标题是:“Facebook上传失败”,消息本身是:“您的上传无法完成,因为我们无法访问您的照片。”

以下是用于共享的代码段:

mShareIntent = new Intent();
mShareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
mShareIntent.setType("image/jpeg");
mShareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
ArrayList<Uri> uris = new ArrayList<Uri>();
for(int i = 0; i < mImageUrls.size(); i++) {                    
    uris.add(Uri.parse("file://"+mShareFiles[i].getAbsolutePath()));
}
mShareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
startActivity(Intent.createChooser(mShareIntent,  "Share Images To..."))
mShareIntent=newintent();
mShareIntent.setAction(Intent.ACTION\u SEND\u MULTIPLE);
mShareIntent.setType(“图像/jpeg”);
mShareIntent.setFlags(Intent.FLAG\u GRANT\u READ\u URI\u PERMISSION);
ArrayList URI=新的ArrayList();
对于(inti=0;i
这些照片显然是可以访问的,因为它们已被gmail和yahoo mail成功处理。Facebook本身也可以访问,但不能发送

作为一个实验,我分享了安卓画廊的照片,在选择器中,我选择了Facebook,照片被成功上传

有人知道会发生什么吗

谢谢,,
Gary

如果文件位于应用程序的私有目录中(甚至位于KitKat的sd卡目录中),则您可能会遇到共享问题。而且
FileProvider
也有它的问题

我发现共享图像文件的唯一可靠方法是将它们复制到外部存储目录中,以便进行图片共享(您可以创建
.nomedia
子目录,以避免它们出现在Gallery应用程序中)

例如:

Bitmap bitmapToShare = ...

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
    File pictureStorage = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
    File noMedia = new File(pictureStorage, ".nomedia");
    if (!noMedia.exists())
        noMedia.mkdirs();

    File file = new File(noMedia, "shared_image.png");
    saveBitmapAsFile(bitmapToShare, file);

    Intent shareIntent = new Intent();
    shareIntent.setAction(Intent.ACTION_SEND);
    shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
    shareIntent.setType("image/png");

    startActivity(shareIntent);
}

谢谢你,马蒂亚斯。这似乎奏效了。Android推荐的FileProvider对FB没有帮助。我想FB应用程序也可能有一个bug,如果我只与自己分享,这个分享仍然失败,因为这是我测试时的设置。如果我和朋友分享,那么分享就有效了。另一个问题是,当通过Uri文件进行共享时(与FileProvider启用的Uri内容相反),您会遇到严格的违规行为,哦,好吧,至少它是有效的:),如果我尝试使用ACTION_SEND_MULTIPLE并发送Uri的ArrayList,它对FB仍然失败,对gmail/yahoo/FB messenger有效。