我想制作一个带有图片的应用程序,并且可以通过whatsapp,gmail,mms分享其中一个或一些这些照片... 我能够编码的方式有一半。
我现在的问题是我在应用程序中有一个用于测试的图像(用ImageView制作)pic被复制到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吗?
如果你能给我一些帮助,我会很高兴。
答案 0 :(得分: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"));
}
}