我写了一个程序,它有两个按钮,一个用于图库,点击时显示我的图库中的图像,另一个按钮启动我的相机,显示捕获的图像。
图片显示正常,但我无法理解如何将显示的图片分享给其他应用,请提供帮助。
下面是我的共享代码:我已经放了问号,因为我需要知道我应该在我的Uri中传递什么,以便我可以获得我的图像的路径
imgShare.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(Intent.ACTION_SEND);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.setType("image/*");
Uri selectedImage = ????
intent.putExtra(Intent.EXTRA_STREAM, selectedImage);
startActivityForResult(
Intent.createChooser(intent, "Select Picture"),
SELECT_PICTURE);
}
我的startActivityForResult代码
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if (requestCode == SELECT_PICTURE && resultCode == RESULT_OK
&& null != data) {
// Toast.makeText(getBaseContext(),
// "File saved at " + imageFile.getAbsolutePath(),
// Toast.LENGTH_SHORT).show();
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
/*
* Bitmap bitmap = BitmapFactory .decodeFile( Environment
* .getExternalStoragePublicDirectory
* (Environment.DIRECTORY_PICTURES) + File.separator + ".jpg",
* options);
*/
Bitmap bitmap = BitmapFactory.decodeFile(picturePath);
int newWidth = bitmap.getWidth();
int newHeight = bitmap.getHeight();
while (newWidth > 1200) {
newWidth = newWidth / 2;
newHeight = newHeight / 2;
}
img.setImageBitmap(Bitmap.createScaledBitmap(bitmap, newWidth,
newHeight, false));
}
欢迎任何建议,感谢您
答案 0 :(得分:2)
这些被称为意图,一些应用程序正在侦听图像和纯文本等内容。当你调用这些意图时,会打开一个对话框,正在监听你的内容。
分享单张图片
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
shareIntent.setType("image/jpeg");
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to)));
分享多张图片
ArrayList<Uri> imageUris = new ArrayList<Uri>();
imageUris.add(imageUri1); // Add your image URIs here
imageUris.add(imageUri2);
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, "Share images to.."));
获取ImageURI
public Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}
或强>
Uri.parse(new File("/sdcard/yourImage.jpg").toString())
上找到更多信息