嗨,我有以下的代码共享图像:
// Share
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/jpeg");
Uri uri = Uri.parse(getFilesDir() + File.separator + "myGoal.jpg");
share.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(share, "Share Image"));
它的工作原理的图像分享到Dropbox的,但如果我选择Facebook的选项,我得到Facebook的状态更新对话框,不附加任何图像,如果我尝试更新我的“测试”状态这是行不通的。 没有错误。 只是不工作。
我知道,因为它上传到Dropbox的我正确,我可以拉起来的形象,看它是不是图像。
我一定要像重视的意图不同为它与Facebook的工作?
有任何想法吗? 我调试一个物理设备上。
所以我想通了这个问题。
我保存的图片与getFilesDir(),它把图片放到我的应用程序沙箱和不可访问到其他应用程序的内部存储。
我取代我用下面的代码:
String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() +
"/MyApp/";
File dir = new File(file_path);
dir.mkdirs();
File file = new File(dir, "myPic.png");
FileOutputStream fOut = new FileOutputStream(file);
screenshot.compress(Bitmap.CompressFormat.PNG, 100, fOut);
fOut.flush();
fOut.close();
// Share
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/png");
share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
share.putExtra(Intent.EXTRA_TEXT, "My Image");
startActivity(Intent.createChooser(share, "Share Image"));
现在工作完全正常。
我做了什么张贴在Facebook上形象,而不是直接将其传递我创建了一个功能,它这样写:
private void ShareWall(String message) {
Bundle parameters = new Bundle();
// share msg
parameters.putString("message", message);
// shre image which you have define above
parameters.putString("picture", postImage);
try {
facebook.request("me");
String response = facebook.request("me/feed", parameters, "POST");
Log.d("response: ", response);
if (response == null || response.equals("")) {
response.equals("");
showToast("No Response.");
} else {
showToast("Message has been posted to your walll!.");
}
finish();
} catch (Exception e) {
showToast("Message failed to posdt on wall.");
e.printStackTrace();
finish();
}
}
希望这帮助你。
即使你不使用Facebook SDK,您仍然可以分享您的应用程序的图像(而不是文字)到Facebook。
只要确保你使用的不是Uri.parse Uri.fromFile,它会工作:
请勿使用:intent.putExtra(Intent.EXTRA_STREAM,Uri.parse(pathToFile));
用途:intent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(新文件(pathToFile)));
这是不使用外部文件写入的解决方案:
Drawable mDrawable = myImageView1.getDrawable();
Bitmap mBitmap = ((BitmapDrawable)mDrawable).getBitmap();
String path = MediaStore.Images.Media.insertImage(getContentResolver(), mBitmap, "Image I want to share", null);
Uri uri = Uri.parse(path);
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, "Share Image"));
在这种情况下,我的形象来自一个ImageView的myImageView。