uniapp js调用Android java 实现智能配网
AndroidBridge.javapackage io.dcloud.simple.test;import android.app.Activity;import org.json.JSONArray;import io.dcloud.common.DHInterface.IWebview;import io.dcloud.common.DHInterface.StandardFeature;i
·
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();
}
}
}
}
更多推荐
已为社区贡献2条内容
所有评论(0)