Android Webview Zxing сканер штрих-кода - PullRequest
0 голосов
/ 05 июля 2019

Я использую приложение Android в WebView, когда я пытаюсь вызвать «com.google.zxing.client.android.SCAN», я получаю сообщение об ошибке «Ошибка загрузки страницы» Я не знаю, чтоПроблема в том, что я все перепробовал.

Пожалуйста, дайте мне решение.Заранее спасибо.

Вот мой код:

android

    import...

    public class MyActivity extends Activity {
        // private WebView webView;
        public static String barcode = null;
        AlertDialogManager alert = new AlertDialogManager();
        Boolean isInternetPresent = false;
        ConnectionDetector cd;
        WebView myWebView;
        ProgressDialog dialog;
      final static String myAddr = "";

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // setContentView(R.layout.activity_main);
            String name_data = getIntent().getExtras().getString("name","");
            String lozinka_data = getIntent().getExtras().getString("email","");
            String OzNapUred_data = getIntent().getExtras().getString("OzNapUred","");
            String myAddr = "samepage.php";
            cd = new ConnectionDetector(getApplicationContext());
            isInternetPresent = cd.isConnectingToInternet();

            if (isInternetPresent) {
               // this.requestWindowFeature(Window.FEATURE_NO_TITLE);
                myWebView = new WebView(this);
                myWebView.setWebViewClient(new MyWebViewClient());
                myWebView.getSettings().setUseWideViewPort(true);
                myWebView.getSettings().setLoadWithOverviewMode(true);
                myWebView.getSettings().setJavaScriptEnabled(true);
                myWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
                myWebView.getSettings().setBuiltInZoomControls(true);
                myWebView.loadUrl(myAddr);
                setContentView(myWebView);
            } else {
                alert.showAlertDialog(MyActivity.this, "Internet Connection Error",
                        "Please connect to working Internet connection.", false);
            }
        }    

     public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
        {
            Toast.makeText(MyActivity.this, "Oh no! " + description, Toast.LENGTH_SHORT).show();
        }


        public void loadScript(String script){
            myWebView.loadUrl("javascript:(function() { " + script + "})()");
        }


        public class JavaScriptInterface {
            Context mContext;
            JavaScriptInterface(Context c) {
                mContext = c;
            }

            public void closeMyActivity() {
                finish();
            }

            public void scanBarcode() {
                Intent intent = new Intent("com.google.zxing.client.android.SCAN");
                intent.setPackage("com.google.zxing.client.android");
                startActivityForResult(intent, 0);
            }
        }   


        public void onActivityResult(int requestCode, int resultCode, Intent intent) {
            if (requestCode == 0) {
                if (resultCode == RESULT_OK) {
                    //here is where you get your result
                    barcode = intent.getStringExtra("SCAN_RESULT");
                }
            }
        }

        private class MyWebViewClient extends WebViewClient {
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                dialog = ProgressDialog.show(MyActivity.this, null,
                        "Please Wait...");
                dialog.setCancelable(true);
                super.onPageStarted(view, url, favicon);
            }

            public void onPageFinished(WebView view, String url) {
                dialog.dismiss();
                super.onPageFinished(view, url);
            }

            @Override
            public boolean shouldOverrideUrlLoading(final WebView view, final String url){
                if(url.contains("com.fidelier.printfromweb:"))   {
                    Uri uri = Uri.parse(url);
                    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                    startActivity(intent);
                    return true;  
                }
                else {
                    return false;  
                }
            }
        }
        }

веб-страница (та же страница.php)

<script type="text/JavaScript">
    function scan(){
       Android.scanBarcode();
    }
</script> 
<button onclick="scan();">get Scan</button>

Любая помощь приветствуется.

...