首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android:分享raw文件夹中的图片。共享了错误的图像

Android:分享raw文件夹中的图片。共享了错误的图像
EN

Stack Overflow用户
提问于 2012-08-12 18:48:13
回答 1查看 872关注 0票数 2

我有一个Activity,用户可以在其中共享raw文件夹中的图像。

raw文件夹有70张图片,都是按字母顺序命名的。第一个是R.raw.recipe01,最后一个是R.raw.recipe70

我从Bundle获得了想要共享的图像int,并且我有一个方法可以将图像从raw文件夹复制到一个可访问的文件中。

我在ActionBar MenuItem中调用了startActivity(createShareIntent());,它工作成功。

问题

共享intent将始终选择R.raw.recipe01作为映像,即使来自Bundleint是用于示例R.raw.recipe33的映像。

我已经在下面分享了我的代码。有人能发现我做错了什么吗?

代码:

代码语言:javascript
复制
private int rawphoto = 0;
private static final String SHARED_FILE_NAME = "shared.png";

@Override
public void onCreate(Bundle savedInstanceState) {

    Bundle bundle = getIntent().getExtras();
    rawphoto = bundle.getInt("rawphoto");
    int savedphoto = rawphoto;

    // COPY IMAGE FROM RAW
    copyPrivateRawResourceToPubliclyAccessibleFile(savedphoto);


private Intent createShareIntent() {
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("image/*");
    shareIntent.putExtra(Intent.EXTRA_TEXT, "IMAGE TO SHARE: ");
    Uri uri = Uri.fromFile(getFileStreamPath("shared.png"));
    shareIntent.putExtra(Intent.EXTRA_STREAM, uri);

    return shareIntent;
}


private void copyPrivateRawResourceToPubliclyAccessibleFile(int photo) {

    System.out.println("INT PHOTO: " +photo);

    InputStream inputStream = null;
    FileOutputStream outputStream = null;
    try {
        inputStream = getResources().openRawResource(photo);
        outputStream = openFileOutput(SHARED_FILE_NAME,
                Context.MODE_WORLD_READABLE | Context.MODE_APPEND);
        byte[] buffer = new byte[1024];
        int length = 0;
        try {
            while ((length = inputStream.read(buffer)) > 0) {
                outputStream.write(buffer, 0, length);
            }
        } catch (IOException ioe) {
            /* ignore */
        }
    } catch (FileNotFoundException fnfe) {
        /* ignore */
    } 

    finally {
        try {
            inputStream.close();
        } catch (IOException ioe) {

        }
        try {
            outputStream.close();
        } catch (IOException ioe) {

        }
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-12 19:51:56

删除Context.MODE_APPEND,以便在文件已存在时覆盖该文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11921609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档