- 首先我們需要下載最新版本的 ,非常感謝 xuyisheng的封裝。
- 下載完畢後,我們在Android中需要導入的Module是libzxing
- 導入到我們的工程中
找到我們下載後的工程,然後選擇,ModuleName名字不要改,如下:
導入後,就成了下面這樣了,如下:
接下來我們需要給app添加依賴,如下:
接下來我們需要給app添加依賴,如下:
打開app目錄下的src下面的AndroidMainifest.xml,添加權限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
MainActivity的代碼如下:
package com.example.myapplication;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.huawei.anyoffice.sdk.SDKContext;
import com.huawei.anyoffice.sdk.SDKContextOption;
import com.huawei.anyoffice.sdk.log.Log;
import com.huawei.anyoffice.sdk.login.LoginAgent;
import com.huawei.anyoffice.sdk.login.LoginParam;
import com.huawei.anyoffice.sdk.network.NetChangeCallback;
import com.huawei.anyoffice.sdk.network.NetStatusManager;
import com.xys.libzxing.zxing.activity.CaptureActivity;
import org.json.JSONObject;
import java.io.File;
import java.net.InetSocketAddress;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class MainActivity extends FragmentActivity {
private Button btn;
private TextView tv;
private WebView view;
private String user;
private String result;
//工程對應tag標識
private String TAG = "MyApplication";
private static final int TIME_OUT_PROGRESS = 30;
private static final int TIME_OUT_MILLIS = 5*1000;
//隧道狀態回調的處理
private NetChangeCallback callback = new NetChangeCallback() {
@Override
public void onNetChanged(int oldState, int newState, int errorCode) {
Log.e(TAG, String.format("oldState:%d, newState:%d, errorCode:%d, ", oldState, newState, errorCode));
}
};
//js調用安卓,必須加@JavascriptInterface註釋的方法纔可以被js調用
@JavascriptInterface
public String androidMethod() {
return "{\"fullName\":\"張三\",\"departmentName\":\"科技處\"}";
}
// 打開掃描界面掃描條形碼或二維碼
@JavascriptInterface
public void openCarema(){
Intent openCameraIntent = new Intent(MainActivity.this, CaptureActivity.class);
startActivityForResult(openCameraIntent, 0);
}
// 將掃描到的結果返回一下
@JavascriptInterface
public String getResult(){
return result;
}
// 獲取掃描結果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Bundle bundle = data.getExtras();
String scanResult = bundle.getString("result");
this.result = scanResult;
view.loadUrl("file:///android_asset/"+result);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// user = login();
view = (WebView) findViewById(R.id.view);
view.clearCache(true);
view.getSettings().setDomStorageEnabled(true);
String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
view.getSettings().setAppCachePath(appCachePath);
view.getSettings().setAllowFileAccess(true);
view.getSettings().setAppCacheEnabled(true);
view.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
view.getSettings().setJavaScriptEnabled(true);
// view.loadUrl("file:///android_asset/demo.html");
view.loadUrl("http://192.168.0.106:9090");
view.addJavascriptInterface(this, "androidObject");
}
我寫的這個Demo大家可以下載下來看看