0

我想制作一个带有图片的应用程序,并可以通过 whatsapp、gmail、mms 分享这些图片中的一个或一些......我能够编码的一半。

我现在的问题是我在应用程序中有一张图片用于测试(使用 ImageView 制作)图片被复制到 drawable-hdpi 中。如果我有更多照片,最好的方法是什么?(ImageView,Gallery,..?)我想将图片存储在应用程序中......

我的 SharedActionProvider 正在工作,我用文本对其进行了测试。我现在将代码修改为:

ShareActionProvider mShare = (ShareActionProvider) shareItem.getActionProvider();

    Intent picMessageIntent = new Intent(android.content.Intent.ACTION_SEND);
    picMessageIntent.setType("image/*");
    picMessageIntent.setAction(Intent.ACTION_SEND);
    picMessageIntent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(imageView1));
    mShare.setShareIntent(picMessageIntent);

我想知道的是:

我怎样才能让用户决定他要发送哪张照片?例如,用户在应用程序中标记它然后分享到whatsapp?我真的需要 Uri 吗?

如果您能给我一些帮助,我将非常高兴。

4

1 回答 1

0

全屏活动的解决方案适合我:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.full_image);

        // get intent data
        Intent i = getIntent();

        // Selected image id
        int position = i.getExtras().getInt("id");
        ImageAdapter imageAdapter = new ImageAdapter(this);

        ImageView imageView = (ImageView) findViewById(R.id.full_image_view);
        imageView.setImageResource(imageAdapter.mThumbIds[position]);
        BitmapDrawable bm = (BitmapDrawable) imageView.getDrawable();
        Bitmap mysharebmp = bm.getBitmap();


        try {
            ByteArrayOutputStream bytes = new ByteArrayOutputStream();
            mysharebmp.compress(Bitmap.CompressFormat.JPEG, 100, bytes);

            //you can create a new file name "test.jpeg"
            File f = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
                                    + File.separator + "tmp.jpeg");

            f.createNewFile();
            //write the bytes in file
            FileOutputStream fo = new FileOutputStream(f);
            fo.write(bytes.toByteArray());

            // remember close de FileOutput
            fo.close();
          Log.d("done","done");
        } catch (FileNotFoundException e) {
          e.printStackTrace();
        } catch (IOException e) {
          e.printStackTrace();
        }

        Intent sharingIntent = new Intent(Intent.ACTION_SEND);  
        sharingIntent.setType("image/*");
        sharingIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///mnt/sdcard/Pictures/tmp.jpeg"));
        startActivity(Intent.createChooser(sharingIntent,
                            "Share image using"));

    }


}
于 2014-04-06T07:28:47.237 回答