package com.taiyi.tyusbsdk.pulse; import android.annotation.SuppressLint; import android.app.Activity; import android.app.Application; import android.content.Context; import android.content.Intent; import android.os.Build; import androidx.annotation.Nullable; import com.taiyi.tyusbsdk.ResultListener; import com.taiyi.tyusbsdk.pulse.net.HttpImpl; import com.taiyi.tyusbsdk.pulse.net.HttpUtil; import com.taiyi.tyusbsdk.pulse.ui.SuccessActivity; import com.taiyi.tyusbsdk.pulse.util.AppManager; import org.greenrobot.eventbus.EventBus; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; /** * Created by zbh on 2021/11/23. * Version: 1.0 */ public class TaiyiManager { private String appId; private String appSecret; private String uid; private static TaiyiManager instance; private static TaiyiConfig _config; private Context context; public static final int CAPTURE_REQUEST = 10101; public static final String CAPTURE_IMG_PATH = "img_path"; private String pulseResult; private String pulseReport; private ResultListener mResultListener; public void setResultListener(ResultListener listener) { mResultListener = listener; } public String getPulseReport() { return pulseReport; } public void setPulseReport(String pulseReport) { this.pulseReport = pulseReport; } public String getPulseResult() { return pulseResult; } public void setPulseResult(String pulseResult) { this.pulseResult = pulseResult; } public void onResult(String pr,String measureId,String reportData) { if (mResultListener != null) { mResultListener.onResult(pr, measureId,reportData); } } public void onSkip() { if (mSkipInterface != null) { mSkipInterface.onSkip(); } } public String getUrl(String measureId) { return "https://hybrid.reborn-tech.com/report.html#/?mid=" + measureId + "&access_session=" + HttpUtil.AuthorizationValue + "&appId=" + appId; } public void getAsyncUrl(String measureId, final HttpImpl callback) { HttpUtil.getInstance().webViewCheck(new HttpImpl() { @Override public void showError(String error) { callback.showError(error); } @Override public void showResponse(String response) { HttpUtil.AuthorizationValue = response; callback.showResponse(getUrl(measureId)); } }); } private TaiyiManager() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { closeAndroid10Dialog(); } } @SuppressLint({"SoonBlockedPrivateApi", "PrivateApi", "DiscouragedPrivateApi"}) private void closeAndroid10Dialog() { try { Class aClass = Class.forName("android.content.pm.PackageParser$Package"); Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class); declaredConstructor.setAccessible(true); } catch (Exception e) { e.printStackTrace(); } try { Class cls = Class.forName("android.app.ActivityThread"); Method declaredMethod = cls.getDeclaredMethod("currentActivityThread"); declaredMethod.setAccessible(true); Object activityThread = declaredMethod.invoke(null); Field mHiddenApiWarningShown = cls.getDeclaredField("mHiddenApiWarningShown"); mHiddenApiWarningShown.setAccessible(true); mHiddenApiWarningShown.setBoolean(activityThread, true); } catch (Exception e) { e.printStackTrace(); } } public static TaiyiManager getInstance() { if (instance == null) { synchronized (TaiyiManager.class) { if (instance == null) { instance = new TaiyiManager(); } } } return instance; } public static TaiyiConfig getConfig() { return _config; } public void init(Application application) { this.init(application, null); } public void init(String appId, String appSecret, Application application) { this.init(application, new TaiyiConfig(appId, appSecret)); } public void init(Application application, @Nullable TaiyiConfig config) { this.context = application; _config = config == null ? TaiyiConfig.getDefault(context.getApplicationContext()) : config; this.appId = _config.getAppId(); this.appSecret = _config.getAppSecret(); ProxyManager.getInstance().init(_config.proxy); } public void toGoMeasure(boolean isLeft) { if (isLeft) { EventBus.getDefault().post(new EventTestMaiMessage(0)); } else { EventBus.getDefault().post(new EventTestMaiMessage(1)); } } private SkipInterface mSkipInterface; public SkipInterface getSkipInterface() { return mSkipInterface; } public interface SkipInterface { void onSkip(); } public String getAppId() { return appId; } public String getUid() { return uid; } public String getAppSecret() { return appSecret; } public void toMeasure(String uid, Activity activity,Class target, TaiyiManager.SkipInterface skipInterface, ResultListener listener) { this.uid = uid; Intent intent = new Intent(activity, target); activity.startActivity(intent); mSkipInterface = skipInterface; setResultListener(listener); } public void clearMeasure() { AppManager.finishActivity(SuccessActivity.class); } }