分享工具类

import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build;
import android.os.Parcelable;
import android.provider.MediaStore;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;


public class ShareUtils {
    private static Bitmap mBitmap;
    /**
     * 单图片分享
     */
    public static void share(Context context, File imageFile) {
        Intent intent = new Intent();
        Uri uri;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            uri = getImageContentUri(context, imageFile);
        } else {
            uri = Uri.fromFile(imageFile);
        }
        //设置分享行为
        intent.setAction(Intent.ACTION_SEND_MULTIPLE);
        intent.setAction("android.intent.action.SEND");
        //设置分享内容的类型
        intent.setType("image/png");
        intent.putExtra(Intent.EXTRA_STREAM, uri);
        context.startActivity(Intent.createChooser(intent, "分享"));
    }


    /**
     * 多图片分享
     */
    public static void share(Context context, List<File> imageFiles) {
        Intent share_intent = new Intent();
        List<Uri> uris = new ArrayList<>();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            for (File file : imageFiles) {
                Uri uri = getImageContentUri(context, file);
                uris.add(uri);
            }
        } else {
            for (File file : imageFiles) {
                Uri uri = Uri.fromFile(file);
                uris.add(uri);
            }
        }
        //设置分享行为
        share_intent.setAction(Intent.ACTION_SEND_MULTIPLE);
        share_intent.setAction("android.intent.action.SEND");
        //设置分享内容的类型
        share_intent.setType("image/png");
        share_intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, (ArrayList<? extends Parcelable>) uris);
        context.startActivity(Intent.createChooser(share_intent, "分享"));
    }

    private static Uri getImageContentUri(Context context, File imageFile) {
        String filePath = imageFile.getAbsolutePath();
        Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                new String[]{MediaStore.Images.Media._ID}, MediaStore.Images.Media.DATA + "=? ",
                new String[]{filePath}, null);
        if (cursor != null && cursor.moveToFirst()) {
            int id = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));
            Uri baseUri = Uri.parse("content://media/external/images/media");
            return Uri.withAppendedPath(baseUri, "" + id);
        } else {
            if (imageFile.exists()) {
                ContentValues values = new ContentValues();
                values.put(MediaStore.Images.Media.DATA, filePath);
                return context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
            } else {
                return null;
            }
        }
    }

    public static Bitmap returnBitMap(final String url) {

        new Thread(new Runnable() {
            @Override
            public void run() {
                URL imageUrl = null;

                try {
                    imageUrl = new URL(url);
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                }
                try {
                    HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection();
                    conn.setDoInput(true);
                    conn.connect();
                    InputStream is = conn.getInputStream();
                    mBitmap = BitmapFactory.decodeStream(is);
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();

        return mBitmap;
    }
}

切图分享:

try {
    View contentView = findViewById(R.id.rl_layout);
    findViewById(R.id.tv_share).setVisibility(View.INVISIBLE);
    Bitmap bitmap = Bitmap.createBitmap(contentView.getWidth(), contentView.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    contentView.draw(canvas);
    findViewById(R.id.tv_share).setVisibility(View.VISIBLE);
    File fileDir = getExternalFilesDir(null);
    fileDir.mkdirs();
    File file = new File(fileDir, "share.png");
    FileOutputStream outputStream = new FileOutputStream(file);
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
    outputStream.close();
    ShareUtils.share(this, file);
} catch (IOException e) {
    e.printStackTrace();
    ToastUtils.show(getApplicationContext(), "分享异常");
}

rl_layout为父布局id

tv_share为切图是隐藏的控件的id

猜你喜欢

转载自blog.csdn.net/freak_csh/article/details/88962416
今日推荐