在这里插入图片描述
AndroidBridge.java

package io.dcloud.simple.test;

import android.app.Activity;

import org.json.JSONArray;

import io.dcloud.common.DHInterface.IWebview;
import io.dcloud.common.DHInterface.StandardFeature;
import io.dcloud.common.util.JSUtil;

public class AndroidBridge extends StandardFeature {

    /**
     * @param pWebview
     * @param array
     */
    public void callAppFunc(IWebview pWebview, JSONArray array) {
//        获取回调ID
        String CallBackID = array.optString(0);
//        获取参数并计算(这里模拟原生处理)
        String newstring = "你好,这个字符串来自android原生代码,您传过来的参数是:" + array.optString(1);
//        构建回传参数
//        JSONArray newArray = new JSONArray();
//        newArray.put(newstring);
//        JSUtil.execCallback(IWebview pWebViewImpl,String pCallbackId,String pMessage,int pStatus,boolean pKeepCallback)
//        参数:
//        pWebViewImpl - webview对象
//        pCallbackId - 回调方法ID
//        pMessage - 回调信息
//        pStatus - 回调code值 如:OK、ERROR
//        pKeepCallback - js层回调function是否要保存
        Activity activity = pWebview.getActivity();
//        activity.startActivity(new Intent(activity, TestActivity.class));
        MSTest.showToast(activity);
        // 第一个参数是当前函数的入参,直接传入, 第二个是根据入参获取的回调id,第三个是回调的数据,是一个json数组

        JSUtil.execCallback(pWebview, CallBackID, newstring, JSUtil.OK, false);
    }


}

MSTest.java

package io.dcloud.simple.test;

import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.AsyncTask;
import android.os.Build;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;

import java.util.List;

import io.dcloud.simple.test.esptouch.EsptouchTask;
import io.dcloud.simple.test.esptouch.IEsptouchResult;

public class MSTest {
    public static void showToast(Activity activity) {
        Toast.makeText(activity, "我是原生toast弹框", Toast.LENGTH_LONG).show();
        WifiManager mWifiManager = (WifiManager) activity.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
        Log.e("========", scanApBssidBySsid(mWifiManager, "NETGEAR86"));
        new ConfigureTask(activity, "NETGEAR86", scanApBssidBySsid(mWifiManager, "NETGEAR86"), "jack.12306", false).execute();

    }

    private static String scanApBssidBySsid(WifiManager wifimanager, String ssid) {
        if (TextUtils.isEmpty(ssid)) {
            return null;
        }
        String bssid = null;
        for (int retry = 0; bssid == null && retry < 3; retry++) {
            wifimanager.startScan();
            List<ScanResult> mScanResultList = wifimanager.getScanResults();
            for (ScanResult scanResult : mScanResultList) {
                if (scanResult.SSID.equals(ssid)) {
                    bssid = scanResult.BSSID;
                    return bssid;
                }
            }
        }
        return null;
    }

    /**
     * 获取SSID
     *
     * @param activity 上下文
     * @return WIFI 的SSID
     */
    private static String getWIFISSID(Activity activity) {
        String ssid = "unknown id";
        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.O || Build.VERSION.SDK_INT == Build.VERSION_CODES.P) {
            WifiManager mWifiManager = (WifiManager) activity.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
            assert mWifiManager != null;
            WifiInfo info = mWifiManager.getConnectionInfo();
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
                return info.getSSID();
            } else {
                return info.getSSID().replace("\"", "");
            }
        } else if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O_MR1) {
            ConnectivityManager connManager = (ConnectivityManager) activity.getApplicationContext()
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            assert connManager != null;
            NetworkInfo networkInfo = connManager.getActiveNetworkInfo();
            if (networkInfo != null && networkInfo.isConnected()) {
                if (networkInfo.getExtraInfo() != null) {
                    return networkInfo.getExtraInfo().replace("\"", "");
                }
            }
        }
        return ssid;
    }

    // 配网过程
    static class ConfigureTask extends AsyncTask<String, Void, IEsptouchResult> implements DialogInterface.OnCancelListener {
        private Activity mActivity;
        //  private ProgressDialog mDialog;
        private EsptouchTask mTask;
        private final String mSsid;

        public ConfigureTask(Activity activity, String apSsid, String apBssid, String password, boolean isSsidHidden) {
            mActivity = activity;
            mSsid = apSsid;
            mTask = new EsptouchTask(apSsid, apBssid, password, isSsidHidden, mActivity);
        }

        @Override
        protected void onPreExecute() {
            Log.e("========", "正在配网");
        }

        @Override
        protected IEsptouchResult doInBackground(String... params) {
            return mTask.executeForResult();
        }

        @Override
        protected void onPostExecute(IEsptouchResult result) {
            int toastMsg;
            if (result.isSuc()) { // 配网成功--跳转到绑定设备页面,当前页面销毁
                Log.e("========", "配网成功");
            } else if (result.isCancelled()) { // 取消配置
                Log.e("========", "取消配置");
            } else { // 配置结束,因当前连接的WIFI与配置的WIFI不同,无法收到反馈,请自行检查结果
                Log.e("========", "配置结束,因当前连接的WIFI与配置的WIFI不同,无法收到反馈,请自行检查结果");
            }
        }

        @Override
        public void onCancel(DialogInterface dialog) {
            if (mTask != null) {
                mTask.interrupt();
            }
        }
    }

}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐