gpt4 book ai didi

android - Intent + Share + Action_Send_Multiple + Facebook 不工作

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:22 24 4
gpt4 key购买 nike

我正在尝试使用 Intent 进行分享。它适用于单张图片或当我使用 Intent.ACTION_SEND 时。

但是当我使用 Intent.ACTION_SEND_MULTIPLE 时,它似乎在 Facebook 上不起作用,例如我正在使用下面的代码。

    ArrayList<Uri> files = new ArrayList<Uri>();
File a = new File(FileUtil.getDefaultMediaFolderPath(), "a.jpeg");
File b = new File(FileUtil.getDefaultMediaFolderPath(), "b.jpeg");

files.add(Uri.fromFile(a));
files.add(Uri.fromFile(b));

if (a.exists()) {
if (b.exists()) {
System.out.println("Both present.");
}
}

Intent shareIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
shareIntent.setType("*/*");
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, files);
startActivity(Intent.createChooser(shareIntent,"share via."));

上面的代码在 Gmail 中运行良好,并且它在 Gmail 中附加了图片。但是在 Facebook 上它似乎不起作用并且没有附加图像。

我尝试了不同的组合,但似乎没有任何效果。虽然当我尝试从设备默认图库中共享多张图片时,它运行良好并附加了 Facebook 中的所有图片。

请帮帮我!!

最佳答案

在尝试了很多事情之后,我终于找到了解决方案,在当前版本中,Facebook 打破了接受多个图像的 Intent 作为 Intent。 ACTION_SEND_MULTIPLE。但是当多重共享在我的设备中使用默认图库时,我感到很惊讶。最后在我 friend 的帮助下(不想占他的便宜)。我开始知道 Default GAllery 正在使用 Content Provider 在 URI 中发送文件,这就是他们工作的原因所以我更改了 Facebook 的 URI 列表(我创建了自定义共享对话框,所以我可以拦截哪个选项是从通过 Intent 打开的共享对话框中选择的。)

private void updateUrisForFacebook() {
if (intent.getAction().equalsIgnoreCase(Intent.ACTION_SEND_MULTIPLE)) {
ArrayList<Uri> uris = intent
.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
for (int i = 0; i < uris.size(); i++) {
Uri uri = uris.get(i);
String path = uri.getPath();
File imageFile = new File(path);
uri = getImageContentUri(imageFile);
uris.set(i, uri);
}
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
}
}

private Uri getImageContentUri(File imageFile) {
String filePath = imageFile.getAbsolutePath();
Cursor cursor = context.getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new String[] { MediaStore.Images.Media._ID },
MediaStore.Images.Media.DATA + "=? ",
new String[] { filePath }, null);
if (cursor != null && cursor.moveToFirst()) {
int id = cursor.getInt(cursor
.getColumnIndex(MediaStore.MediaColumns._ID));
Uri baseUri = Uri.parse("content://media/external/images/media");
return Uri.withAppendedPath(baseUri, "" + id);
} else {
if (imageFile.exists()) {
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DATA, filePath);
return context.getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
} else {
return null;
}
}
}

终于成功了:)

基本思路是将您的 URI 列表转换为内容提供商 URI 列表,然后检查它是否有效。

关于android - Intent + Share + Action_Send_Multiple + Facebook 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25846496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com