本文介绍了正确的方式来分享影像(使用意图)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在我的应用程序创建的图像,并希望分享这些社交网络(脸谱),邮件应用程序(Gmail的),和其他应用程序,可以接收的图像。
问题(我认为)的起源是,我不希望使用外部存储作为我的图片基地。我希望用我的数据文件夹或我的缓存文件夹,因为这些都不需要访问的许可。
在code,我用它来写我的图像文件(和我指定的 MODE_WORLD_READABLE
,以便其他应用程序可以读取它们):
的FileOutputStream FOS = NULL;
尝试{
FOS = context.openFileOutput(image.jpg的Context.MODE_WORLD_READABLE);
bitmap.com preSS(Bitmap.Com pressFormat.JPEG,100,FOS);
} {最后
如果(FOS!= NULL)
fos.close();
}
这是code,我将影像分享的:
文件internalFile = context.getFileStreamPath(image.jpg文件);意向意图=新的Intent();
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(internalFile));
intent.setType(图像/ JPEG);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);context.startActivity(Intent.createChooser(意向,共享));
此解决方案是很容易的,像Facebook应用程序工作正常,但不会作为它与failes例如Gmail的:
文件://附件路径必须指向的file:/// MNT / SD卡
有一些黑客(见下文),以获得它与Gmail的工作,但我让我问自己,如果有一个更好的方式来分享照片,如果没有黑客的作品,这是我忽视。所以,问题:
- 什么是分享图像的最佳方法是什么? (外部存储?)
- 有没有更多的应用程序,(误)的行为就像Gmail吗? (我已经看到了一些麻烦与谷歌+)
- 的如果没有其他的方式:的我可以写特殊意图分享到特定的应用程序。我有一个共享的默认方式,当用户我的观察名单中选择一个应用程序覆盖它?
黑客
-
使用 按简单地指向
乌里
来:文件:/// MNT / SD卡/../../我/包/名/ ...
该解决方案感觉不对。
-
使用
的ContentProvider
描述的。但是从链接引用(Issue: It crashes the MMS composer)
解决方案
You should to make 3 steps.
Take picture.
public Bitmap takeScreenshot() {
View rootView = findViewById(android.R.id.content).getRootView();
rootView.setDrawingCacheEnabled(true);
return rootView.getDrawingCache();
}
Save picture.
public String saveBitmap(Bitmap bitmap) {
File imagePath = new File(Environment.getExternalStorageDirectory() + "/screenshot.png");
FileOutputStream fos;
try {
fos = new FileOutputStream(imagePath);
bitmap.compress(CompressFormat.PNG, 100, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
Log.e("GREC", e.getMessage(), e);
} catch (IOException e) {
Log.e("GREC", e.getMessage(), e);
}
return imagePath.getAbsolutePath();
}
Share to social network.
这篇关于正确的方式来分享影像(使用意图)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!