admin
2021-08-19 6f07cf3ce7ccb37911f5c755b7833732fb8eee64
app/src/com/hanju/video/app/util/browser/BWJavaInterface.java
@@ -1,21 +1,39 @@
package com.hanju.video.app.util.browser;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.MediaScannerConnection;
import android.webkit.JavascriptInterface;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.lcjian.library.util.Environment;
import com.lcjian.library.util.common.StringUtils;
import com.hanju.video.app.util.AlibcTradeUtil;
import com.hanju.video.app.util.JumpActivityUtil;
import com.hanju.video.app.util.x5.X5WebView;
import com.lcjian.library.util.security.MD5Utils;
import com.tencent.android.tpush.horse.Tools;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Iterator;
public class BWJavaInterface extends BaseBWJavaInterface {
@@ -134,4 +152,83 @@
        //权限未授权
        return ContextCompat.checkSelfPermission(mContext, permission) == PackageManager.PERMISSION_DENIED;
    }
    @JavascriptInterface
    public void savePicture(String url) {
        if (lacksPermissions(Manifest.permission.READ_EXTERNAL_STORAGE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE)) { //存储权限未开启
            ActivityCompat.requestPermissions(mContext, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 10023);
        } else {//存储权限已开
            String md5 = MD5Utils.getMD532(url);
            String path = Environment.getExternalStorageDirectory()
                    + "/hanju";
            File file = new File(path + "/" + md5 + ".jpg");
            if (!file.exists()) {
                try {
                    File resultFile = saveImageFromPathToSdCard(mContext, url, path, md5 + ".jpg");
                    if (resultFile != null) {
                        mContext.runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                MediaScannerConnection.scanFile(mContext, new String[]{file.getAbsolutePath()}, null, null);
                                Toast.makeText(mContext, "保存到相册成功", Toast.LENGTH_SHORT).show();
                            }
                        });
                    }
                } catch (Exception e) {
                    Toast.makeText(mContext, "图片保存失败", Toast.LENGTH_LONG).show();
                    if (file.exists())
                        file.delete();
                }
            } else {
                Toast.makeText(mContext, "图片已经保存!", Toast.LENGTH_LONG).show();
            }
        }
    }
    //创建本地保存路径
    public static File createImageFilePath(String path, String imageFileName) throws IOException {
        File storageDir = new File(path);
        if (!storageDir.exists()) {
            storageDir.mkdir();
        }
        File image = new File(storageDir, imageFileName);
        return image;
    }
    //保存网络图片保存到本地
    public static final File saveImageFromPathToSdCard(Context context, String image,
                                                       String path, String imageFileName) {
        boolean success = false;
        File file = null;
        try {
            file = createImageFilePath(path, imageFileName);
            Bitmap bitmap = null;
            URL url = new URL(image);
            HttpURLConnection conn = null;
            conn = (HttpURLConnection) url.openConnection();
            InputStream is = null;
            is = conn.getInputStream();
            bitmap = BitmapFactory.decodeStream(is);
            FileOutputStream outStream;
            outStream = new FileOutputStream(file);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);
            outStream.flush();
            outStream.close();
            success = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (success) {
            MediaScannerConnection.scanFile(context, new String[]{file.getPath()}, null, null);
            return file;
        } else {
            return null;
        }
    }
}