我想在我的应用程序中分享多张照片。我可以使用 facebook graph API 上传一张照片,但如何分享多张照片
谢谢。
Android 不提供用于选择多个图像/图片或任何其他媒体类型的开箱即用 Intent 。来源:https ://stackoverflow.com/a/12919585/450534 (我通常会把马克墨菲的话当作福音,除非有人可以挑战它)
最接近的意图是ACTION_SEND_MULTIPLE.
那个。但是,这不是您的选择。
您将需要创建一个自定义选择器,类似于 Facebook 在其自己的移动应用程序中所做的那样。
您将在此处获得用于实现自己的多图像选择器的完整功能示例:http: //vikaskanani.wordpress.com/2011/07/20/android-custom-image-gallery-with-checkbox-in-grid-to-多选/
最后,要将多张图片一次性上传到 Facebook,您需要发送Batch Requests。
但是对于您正在寻找的东西,肯定没有现成的解决方案。结合以上所有,然后你会的。但恐怕没有什么直截了当的。
我设法使用意图在 Facebook 上分享了多张照片。变量“caminhos”是一个 ArrayList < String >,其中包含您要共享的图像的路径。
protected void share(String nameApp, String imagePath, String text) {
// TODO Auto-generated method stub
try {
List<Intent> targetedShareIntents = new ArrayList<Intent>();
Intent share = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
share.setType("image/jpeg");
List<ResolveInfo> resInfo = getActivity().getPackageManager()
.queryIntentActivities(share, 0);
if (!resInfo.isEmpty()) {
for (ResolveInfo info : resInfo) {
Intent targetedShare = new Intent(
android.content.Intent.ACTION_SEND_MULTIPLE);
targetedShare.setType("image/png"); // put here your mime
// type
if (info.activityInfo.packageName.toLowerCase().contains(
nameApp)
|| info.activityInfo.name.toLowerCase().contains(
nameApp)) {
targetedShare.putExtra(Intent.EXTRA_SUBJECT, text);
targetedShare.putExtra(Intent.EXTRA_TEXT, text);
ArrayList<Uri> files = new ArrayList<Uri>();
for(int j= 0;j<caminhos.size();j++){
if(!caminhos.get(j).isEmpty()){
File file = new File(caminhos.get(j));
Uri uri = Uri.fromFile(file);
files.add(uri);
}
}
targetedShare.putParcelableArrayListExtra(Intent.EXTRA_STREAM,
files);
targetedShare.setPackage(info.activityInfo.packageName);
targetedShareIntents.add(targetedShare);
}
}
Intent chooserIntent = Intent.createChooser(
targetedShareIntents.remove(0), "Select app to share");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
targetedShareIntents.toArray(new Parcelable[] {}));
startActivity(chooserIntent);
}
} catch (Exception e) {
}
}