【问题标题】:Android Webview Input box with Qr/barcode Value insted of key input android?Not entire WebpageAndroid Webview 输入框,带有 Qr/barcode 值而不是键输入 android?不是整个网页
【发布时间】:2016-11-16 06:50:16
【问题描述】:

我关注this阅读二维码

这是我的Webview http://jsfiddle.net/Ua8Cv/99/ 所以在这里,当我在我的 Webview Activity 中单击按钮或输入框时,它将打开我的另一个 Activity Qr 阅读器活动...这是一个本地 Activity Out Side Webview

为此,我已经通过 JavaScript 打开其他活动表单 Webivew 到 Myactivity...

public class Webtest extends AppCompatActivity {

    private WebView webView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webc);

        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);

        webView = (WebView) findViewById(R.id.webm);

        WebSettings set = webView.getSettings();
        set.setJavaScriptEnabled(true);
        webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
        final ProgressDialog progressBar = ProgressDialog.show(Webtest.this, "Please Wait", "Loading...");

        //Enable Javascript

        // webView.getSettings().setJavaScriptEnabled(true);
        //Inject WebAppInterface methods into Web page by having Interface 'Android'
        webView.addJavascriptInterface(new WebAppInterface(this), "SendtoAndroid");
        webView.requestFocusFromTouch();
        webView.setWebViewClient(new WebViewClient()

        {
            public void onPageFinished(WebView view, String url) {

                if (progressBar.isShowing()) {
                    progressBar.dismiss();
                }
            }

        webView.setWebChromeClient(new WebChromeClient());

        String url = "file:///android_asset/text.html";
        try {

            if (URLUtil.isValidUrl(url)) {
                webView.loadUrl(url);

            } 
        } catch (Exception e) {

            String s = "<html><body style='background:#fff;'><br><div ><b><p style='color: black;font-size:20px;text-align:left;'>Unable to load information.</p></b><div style='color: black;text-align:center;'>Server May be Temporarily Down\n" + "\n" +
                    "<div style='color: black;text-align:center;'>Please Try After Sometime</p></div></div></body></html>";
        }

    }

    //Class to be injected in Web page

    public class WebAppInterface {

        Context mContext;

        WebAppInterface(Context c) {
            mContext = c;
        }

        @JavascriptInterface
        public void Ma() {

            AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
            // Setting Dialog Title
            alertDialog.setTitle("Alert");
            // Setting Dialog Message
            alertDialog.setMessage("Are you sure you want to leave to next screen?");
            // Setting Positive "Yes" Button
            alertDialog.setPositiveButton("YES",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            //Move to Next screen
                            //Webtest.this.finish();

                            Intent ss = new Intent(Webtest.this, MainActivity.class);
                            ss.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                            ss.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                            ss.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                            ss.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                            startActivity(ss);
                        }
                    });
            // Setting Negative "NO" Button
            alertDialog.setNegativeButton("NO",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            // Cancel Dialog
                            dialog.cancel();
                        }
                    });
            // Showing Alert Message
            alertDialog.show();
        }

    }
}

所以直到这里一切都很好,我可以使用上述方法从网络视图扫描和显示,但在这里我可以在我的活动中显示结果..

但我想在我的 webview 中的光标位置显示或添加 Input(my qr code value).. 是否可以在 webview 中将 Qrcode 值赋予 Cursor...

请大家帮忙

更新 1

这里我已经完成了二维码/条形码并在 Webview 中打开该活动,但我无法将结果值作为输入提供给 webview 请帮助我处理这种情况

更新 2

我在这里将我的二维码值传递给ResultA Activity 通过意图

这里myval是二维码/条码结果......

String udata = myval;
    Intent i = new Intent(this, ResultA.class);
    i.putExtra("sdata", udata);
    startActivity(i);

我在其他页面中显示我的 Qr/条形码的输出结果

public class ResultA extends Activity {

    private static String urlString;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.resu);

        final TextView tv = (TextView) findViewById(R.id.tv);


        String rdata;
        Intent i = getIntent();
        rdata = i.getStringExtra("sdata");

        tv.setText(tv.getText() + "\t"+ rdata + "\n");

    }

}

但我想在 Web 视图光标中插入 Same Result(rdata) ....

更新 3

我试过这个

    String url = "file:///android_asset/tex.html";
    webView.loadUrl(url);
    webView.setWebChromeClient(new WebChromeClient());

    String rdata;
    Intent i = getIntent();
    rdata = i.getStringExtra("sdata");

    try {

        if (URLUtil.isValidUrl(url)) {
            webView.loadUrl("javascript:document.activeElement.value = '" + rdata + "'");

        }

现在唯一值显示在我的页面中 整个页面都消失了...

但我希望这个值应该放在光标处(网页输入框)

请帮帮我...

【问题讨论】:

    标签: javascript android webview qr-code


    【解决方案1】:

    您可以通过运行document.activeElementWebView 获取活动元素。然后你需要从你的字符串中设置这个元素的值:

    webView.loadUrl("javascript:document.activeElement.value = '" + yourString + "'"); //yourString is a text to be inserted into text field of the html document
    

    【讨论】:

    • 谢谢@Vlad Matvienko 先生,您能否检查我更新的问题并用我无法理解的代码更新您的答案
    • @Madhu,你必须先用WebView把值传回活动,然后用我的代码把它传给WebView
    • @MLN,没有得到什么?在我的回答中,我展示了如何在 WebView 的字段中设置一些字符串。你需要将yourString替换成你需要插入的值。
    • 好的,先生,我得到了你的答案.. 但是如果我这样给出它只是在新网页中显示结果,现有页面已经消失了......但我希望该值应该在网络中输入框....
    • @MLN,马上就可以了。
    猜你喜欢
    • 2021-10-24
    • 1970-01-01
    • 2017-12-31
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多