You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

311 lines
8.3 KiB
Java

1 year ago
package com.rehome.dywoa;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import android.util.Log;
import android.webkit.JavascriptInterface;
import android.widget.Toast;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.rehome.dywoa.utils.SPUtils;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Arrays;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.HexUtil;
import cn.hutool.crypto.SmUtil;
import cn.hutool.crypto.symmetric.SM4;
public class MyObject {
private Context context;
private String data;
private String time;
private String nfc;
public void setNfc(String nfc) {
this.nfc = nfc;
}
/**
* Base64
* @return
*/
@JavascriptInterface
public String getBase64StringImg() {
return base64StringImg;
}
public void setBase64StringImg(String base64StringImg) {
this.base64StringImg = base64StringImg;
}
/**
*
* @return
*/
@JavascriptInterface
public String getQRCodeStr() {
return qrCode;
}
/**
* nfc
* @return
*/
@JavascriptInterface
public String getNfcStr() {
return nfc;
}
public void setQRCodeStr(String qrCode) {
this.qrCode = qrCode;
}
//人脸识别图片
private String base64StringImg;
//二维码
private String qrCode;
public MyObject(Context c,String data,String time){
this.data = data;
this.time = time;
this.context = c;
}
/**
*
* @return
*/
@JavascriptInterface
public String getData(){
String[] dd = new String[0];
try {
dd = data.substring(data.indexOf("Ъ")+2, data.length()-1).split(",");
} catch (Exception e) {
e.printStackTrace();
}
return Arrays.toString(dd).toString();
}
public void showLog(String logText) {
if (BuildConfig.LOG_ERROR) {
if(TextUtils.isEmpty(logText)){
Log.i("app", "logText is null");
}else{
Log.i("app", logText);
}
}
}
/**
*
* @return
*/
@JavascriptInterface
public String getTime(){
return time;
}
@JavascriptInterface
public String commandOperation(String command){
// Log.i("app",command);
//writeNfc
//刷新计划下载界面
Intent intent = new Intent(Contans.ACTION_RECEIVENFC);
intent.putExtra("nfc",command);
//发送本地广播写入nfc
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
return "success";
}
/**
*
* @return
*/
@JavascriptInterface
public String startFaceRecognition(){
showLog("startFaceRecognition");
//发送本地广播,调起人脸识别
Intent intent = new Intent(Contans.STARTFACERECOGNITION);
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
return "success";
}
/**
* APP
* @return
*/
@JavascriptInterface
public String saveDataToSharedPreferences(String key,String value){
showLog("saveDataToSharedPreferences");
SPUtils.put(context, key, value);
return "success";
}
/**
* APP
* @return String
*/
@JavascriptInterface
public Object getDataFromSharedPreferences(String key,Object defaultObject){
showLog("getDataFromSharedPreferences");
if(key==null){
return "";
}
return SPUtils.get(context, key, defaultObject);
}
/**
* APP
* @return String
*/
@JavascriptInterface
public String getStringDataFromSharedPreferences(String key){
showLog("getStringDataFromSharedPreferences");
if(key==null){
return "";
}
String result = (String) SPUtils.get(context, key, "");
return result;
}
/**
*
* @return
*/
@JavascriptInterface
public String closeCurrentActivity(){
showLog("closeCurrentActivity");
//发送本地广播,调起人脸识别
Intent intent = new Intent(Contans.CLOSECURRENTACTIVITY);
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
return "success";
}
/**
* ,
* @return
*/
@JavascriptInterface
public String getGuoMi4EncryptStr(String valueStr){
showLog("getGuoMi4EncryptStr");
if(TextUtils.isEmpty(valueStr)){
return "";
}
String key = "63727578e5a4a9e4b88be697a0e6958c";
SM4 sm4 = SmUtil.sm4(HexUtil.decodeHex(key));
//加密
String encryptStr = sm4.encryptHex(valueStr, CharsetUtil.CHARSET_UTF_8);
return encryptStr;
}
/**
*
* @return
*/
@JavascriptInterface
public String getGuoMi4DecryptStr(String encryptStr){
showLog("closeCurrentActivity");
if(TextUtils.isEmpty(encryptStr)){
return "";
}
try {
String key = "63727578e5a4a9e4b88be697a0e6958c";
SM4 sm4 = SmUtil.sm4(HexUtil.decodeHex(key));
//解密
String decryptStr = sm4.decryptStr(encryptStr, CharsetUtil.CHARSET_UTF_8);
return decryptStr;
}catch (Exception e){
e.printStackTrace();
}
return "解密失败";
}
/**
* APP
* @return
*/
@JavascriptInterface
public String getGuoMi4EncryptAccountStr(){
showLog("getGuoMi4EncryptAccountStr");
String key = "63727578e5a4a9e4b88be697a0e6958c";
SM4 sm4 = SmUtil.sm4(HexUtil.decodeHex(key));
//加密
String encryptStr = sm4.encryptHex(App.getInstance().getUserInfo().getManid(), CharsetUtil.CHARSET_UTF_8);
return encryptStr;
}
/**
* APP+
* @return
*/
@JavascriptInterface
public String getGuoMi4EncryptAccountTimeStr(){
showLog("getGuoMi4EncryptAccountStr");
String key = "63727578e5a4a9e4b88be697a0e6958c";
SM4 sm4 = SmUtil.sm4(HexUtil.decodeHex(key));
String account = App.getInstance().getUserInfo().getManid() + "|" + System.currentTimeMillis();
//加密
String encryptStr = sm4.encryptHex(account, CharsetUtil.CHARSET_UTF_8);
return encryptStr;
}
/**
* APP
* @return
*/
@JavascriptInterface
public String getBaseAccountStr(){
showLog("getBaseAccountStr");
return App.getInstance().getUserInfo().getManid();
}
/**
* URL
* @return
*/
@JavascriptInterface
public String urlEncoding(String encodiString){
showLog("urlEncoding");
try {
//URLEncoder的编码
String encode = URLEncoder.encode(encodiString, "UTF-8");//第二个参数一定要是服务器段支持的格式
showLog(encode);
return encode;
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
/**
* URL
* @return
*/
@JavascriptInterface
public String urlDecoder(String decoderString){
showLog("urlDecoder");
try {
//URLDecoder的解码
String baseString = URLDecoder.decode(decoderString,"UTF-8");
showLog(baseString);
return baseString;
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
/**
*
* @return
*/
@JavascriptInterface
public String openQrScanActivity(){
showLog("openQrScanActivity");
//发送本地广播,调起二给码扫描
Intent intent = new Intent(Contans.OPENQRCODESCAN);
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
return "success";
}
}