add H5 saveBase64Image method

This commit is contained in:
huangjian
2023-01-03 16:03:03 +08:00
parent a7da00fa21
commit f4f38d9553

View File

@@ -1,13 +1,19 @@
package com.mango.moshen.ui.webview;
import android.Manifest;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.MediaRecorder;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.os.Looper;
import android.text.TextUtils;
import android.util.Base64;
import android.util.Log;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
@@ -17,6 +23,7 @@ import com.alibaba.fastjson.JSONObject;
import com.alibaba.security.realidentity.RPEventListener;
import com.alibaba.security.realidentity.RPResult;
import com.alibaba.security.realidentity.RPVerify;
import com.mango.xchat_android_library.utils.file.JXFileUtils;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.orhanobut.logger.Logger;
import com.umeng.commonsdk.statistics.common.DeviceConfig;
@@ -545,4 +552,39 @@ public class JSInterface {
if (mActivity instanceof TarotPayWebViewActivity) mActivity.finish();
}
@JavascriptInterface
public void saveBase64Image(String imageBase64) {
mActivity.runOnUiThread(() ->
mActivity.checkPermission(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
)
.subscribe(aBoolean -> {
if (aBoolean) {
try {
byte[] decode = Base64.decode(imageBase64.split(",")[1], Base64.DEFAULT);
Bitmap resource = BitmapFactory.decodeByteArray(decode, 0, decode.length);
File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
String imgFileName = file + File.separator + System.currentTimeMillis() + ".jpg";
JXFileUtils.saveBitmapToJPG(resource, imgFileName);
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.fromFile(new File(imgFileName));
intent.setData(uri);
context.sendBroadcast(intent);
callbackSaveBase64ImageResult(1);
} catch (Exception e) {
e.printStackTrace();
callbackSaveBase64ImageResult(0);
}
} else {
callbackSaveBase64ImageResult(0);
}
})
);
}
private void callbackSaveBase64ImageResult(int result) {
mWebView.evaluateJavascript("saveBase64ImageCallback(" + result + ")", null);
}
}