将保存添加为共享意图的图像

时间:2017-02-01 06:42:16

标签: android android-intent

我有一个活动,使用毕加索库将图片网址解析为图片视图,我正在使用ACTION_SEND意图在其他应用中共享图片的网址。 我想添加到应用程序列表中,显示“另存为图像”选项,我可以将图像视图的内容保存为SD卡中的图像。 该怎么办? 这是我的共享代码

public void share(View v) {

    String shareBody = "Check out my: "+infoUrl;
    String title;
    title = getString(R.string.infographics) + spinnerCountries.getSelectedItem().toString();
    Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
    sharingIntent.setType("text/plain");
    sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,title);
    sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
    startActivity(Intent.createChooser(sharingIntent, "Share")); 
}

伙计们,我知道如何保存和图像以及如何存储它...我只是想知道如何将保存到图库选项添加到ACTION_SEND意图列表中

1 个答案:

答案 0 :(得分:2)

您可以使用

从imageview获取位图
Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();

然后将位图保存到磁盘,然后使用此函数发送它

private void storeImage(Bitmap image) {

            File pictureFile = getOutputMediaFile();
            if (pictureFile == null) {
                Log.d(TAG,
                        "Error creating media file, check storage permissions: ");// e.getMessage());
                return;
            } 
            try {
                FileOutputStream fos = new FileOutputStream(pictureFile);
                image.compress(Bitmap.CompressFormat.PNG, 90, fos);
                fos.close();
                Uri bmpUri = Uri.parse(pictureFile);
final Intent emailIntent1 = new Intent(     android.content.Intent.ACTION_SEND);
emailIntent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
emailIntent1.putExtra(Intent.EXTRA_STREAM, bmpUri);
emailIntent1.setType("image/png");
            } catch (FileNotFoundException e) {
                Log.d(TAG, "File not found: " + e.getMessage());
            } catch (IOException e) {
                Log.d(TAG, "Error accessing file: " + e.getMessage());
            }  
        }

private  File getOutputMediaFile(){
    // To be safe, you should check that the SDCard is mounted
    // using Environment.getExternalStorageState() before doing this. 
    File mediaStorageDir = new File(Environment.getExternalStorageDirectory()
            + "/Android/data/"
            + getApplicationContext().getPackageName()
            + "/Files"); 

    // This location works best if you want the created images to be shared
    // between applications and persist after your app has been uninstalled.

    // Create the storage directory if it does not exist
    if (! mediaStorageDir.exists()){
        if (! mediaStorageDir.mkdirs()){
            return null;
        }
    } 
    // Create a media file name
    String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmm").format(new Date());
    File mediaFile;
        String mImageName="MI_"+ timeStamp +".jpg";
        mediaFile = new File(mediaStorageDir.getPath() + File.separator + mImageName);  
    return mediaFile;
}