ACTION_SEND如果草稿未删除Android短信,环聊,则对图片的意图不会更新

时间:2014-10-15 06:36:44

标签: android android-intent

好的,我正在使用ACTION_SEND意图分享和成像。我对我最近所做的工作还不熟悉 - 我正在共享一个位图,这个位图是从保存并传递给Intent的视图生成的。

无论如何,通过一些基本的测试我已经注意到,如果你打开选择器,选择说短信,回击而不发送当我将另一个图像分享到SMS时,前一个作为附件出现。附加到SMS的图像示例:

这里的关键是,如果您在返回之前手动从草稿中删除图像,或者如果您发送图像,则您共享的下一个图像将是正确的。我分享到短信,环聊,推特但不是Facebook 时,我注意到了这种行为。同样重要的是,对于短信,环聊和Twitter手动删除修复了所有这些问题,Facebook无论如何工作。

回顾:

  1. 在应用中,点击分享
  2. 从选择器中选择短信
  3. 图片已附加到消息草稿
  4. 回击
  5. 邮件将被丢弃 - >确定
  6. 在其他项目上,点击分享
  7. 从选择器中选择短信
  8. 以前的相同图像已附加到消息草稿
  9. 我不确定从哪里开始。这是我的问题吗?这是否与在不同应用程序中处理草稿消息有关,如果有,我可以做些什么呢?

    以下是每个列表元素附加到共享按钮的共享代码:

    if (holder.shareBTN != null) {
        holder.shareBTN.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Bitmap icon = getBitmapFromView(holder.matchWrapperLL, holder.matchWrapperLL.getWidth(), holder.matchMainLL.getHeight());
                Intent share = new Intent(Intent.ACTION_SEND);
                share.setType("image/jpeg");
                ByteArrayOutputStream bytes = new ByteArrayOutputStream();
                icon.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
                String path1 = Environment.getExternalStorageDirectory() + File.separator + "lolhistory_sc.jpg";
                File f = new File(path1);
                try {
                    if (f.exists()) {
                        // delete if exists
                        f.delete();
                    }
                    f.createNewFile();
                    FileOutputStream fos = new FileOutputStream(f);
                    fos.write(bytes.toByteArray());
                    fos.flush();
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                String path2 = "file://" + f.getAbsolutePath();
                Log.d("", path1);
                Log.d("", path2);
                share.putExtra(Intent.EXTRA_STREAM, Uri.parse(path2));
                startActivity(Intent.createChooser(share, "Share Image"));
            }
        });
    }
    

    这里是引用的getBitmapFromView方法:

    public static Bitmap getBitmapFromView(View view, int width, int height) {
        view.setDrawingCacheEnabled(true);
        view.buildDrawingCache(true);
        view.setBackgroundColor(Color.WHITE);
    
        // creates immutable clone
        Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bmp);
        view.draw(canvas);
    
        view.setDrawingCacheEnabled(false); // clear drawing cache
        return bmp;
    }
    

    感谢您提供任何帮助或建议!

1 个答案:

答案 0 :(得分:0)

将以下标志添加到Intent。

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);