本文介绍了正确的方式来分享影像(使用意图)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的应用程序创建的图像,并希望分享这些社交网络(脸谱),邮件应用程序(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(意向,共享));

此解决方案是很容易的,像Fac​​ebook应用程序工作正常,但不会作为它与failes例如Gmail的:

 文件://附件路径必须指向的file:/// MNT / SD卡


有一些黑客(见下文),以获得它与Gmail的工作,但我让我问自己,如果有一个更好的方式来分享照片,如果没有黑客的作品,这是我忽视。所以,问题:


  • 什么是分享图像的最佳方法是什么? (外部存储?)

  • 有没有更多的应用程序,(误)的行为就像Gmail吗? (我已经看到了一些麻烦与谷歌+)

  • 如果没有其他的方式:的我可以写特殊意图分享到特定的应用程序。我有一个共享的默认方式,当用户我的观察名单中选择一个应用程序覆盖它?


黑客


  1. 使用 按简单地指向乌里来:

    文件:/// MNT / SD卡/../../我/包/名/ ...

    该解决方案感觉不对。


  2. 使用的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.

这篇关于正确的方式来分享影像(使用意图)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 21:12