是否可以将登录信息从webview传递到android活动?

问题描述 投票:0回答:1

我有一个网站,该网站通过webview加载到android应用程序中。无论何时启动应用程序,启动屏幕都会加载Web视图并显示登录页面(在Web视图中),该页面包含两个文本框,一个用于用户名,另一个用于密码。成功登录后,会话开始,网页加载良好。现在,我想从该登录页面(显示在webview中)获取登录信息(即用户名和密码)到我的android活动中。

获得此登录信息的原因:实际上,我想获取这些值,因为我还需要添加指纹身份验证选项以及用户名和密码。我想为用户提供两个选项,即使用用户名/密码或指纹登录。

我如何实现这种情况?有人告诉我,无法通过webview向用户提供这两种选择,因为只有本机android应用程序才能实现这种情况。.请指导我。.

我尝试了许多解决方案,但徒劳。


public class PrimeLedgeWeb extends AppCompatActivity {

    WebView webView;
    String imei,url;
    boolean isConnected;
    WP10ProgressBar progressBar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_prime_ledge_web);

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

        progressBar = (WP10ProgressBar) findViewById(R.id.wp7progressBar);
        progressBar.showProgressBar();
        webView.setWebViewClient(new CustomWebViewClient());

        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setDomStorageEnabled(true);
        webView.setOverScrollMode(WebView.OVER_SCROLL_NEVER);

                                        if (Connection.checkConnection(getApplicationContext()))
                                        {
                                            initGUI();
                                        }
                                        else {
                                            Toast.makeText(PrimeLedgeWeb.this, "Make sure to connect to Internet before proceeding!", Toast.LENGTH_SHORT).show();
                                        }

                                    }

                                    public void initGUI() {
                                        TelephonyManager TelephonyMgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
                                        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
                                            ActivityCompat.requestPermissions( this, new String[] {  android.Manifest.permission.READ_PHONE_STATE  }, 0);
                                        }
                                        else {
                                            imei = TelephonyMgr.getDeviceId();
                                        }


                                        IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
                                        PrimeLedgeWeb.NetworkChangeReceiver receiver = new PrimeLedgeWeb.NetworkChangeReceiver();
                                        registerReceiver(receiver, filter);


                                        NetworkDetaction networkDetaction = new NetworkDetaction(this);
                                        if (networkDetaction.isNetworkConnected()) {
                                            final URLRequest urlRequest = new URLRequest(PrimeLedgeWeb.this);

                                            if (urlRequest.url==null)
                                            {
//                                                url = "http://204.93.216.33/PrimeTex/";
                                                url = "http://204.93.216.33/PrimeTex/Home/DeviceId?DevId=" + imei;

                                                if (new NetworkDetaction(PrimeLedgeWeb.this).isNetworkConnected()) {
                                                    if (urlRequest.url == null) {
                                                        webView.loadUrl(url);

                                                        webView.getSettings().setLoadsImagesAutomatically(true);
                                                        webView.getSettings().setJavaScriptEnabled(true);
                                                        webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);

                                                        webView.setWebViewClient(new WebViewClient(){
                                                            @Override
                                                            public boolean shouldOverrideUrlLoading(WebView view, String Url) {
                                                                if (Url != url) {
                                                                    webView.loadUrl(Url);
                                                                }
                                                                return true;
                                                            }

                                                            @Override
                                                            public void onPageStarted(WebView view, String url, Bitmap favicon) {

                                                                webView.setVisibility(webView.INVISIBLE);
                                                            }

                                                            @Override
                                                            public void onPageFinished(final WebView view, String Url) {

                                                                progressBar.postDelayed(new Runnable() {
                                                                    @Override
                                                                    public void run() {
                                                                        progressBar.setVisibility(View.GONE);
                                                                       // progressBar.hideProgressBar();
                                                                    }
                                                                }, 1000);

                                                                webView.postDelayed(new Runnable() {
                                                                    @Override
                                                                    public void run() {
                                                                        view.setVisibility(webView.VISIBLE);
                                                                    }
                                                                }, 1000);


                                                                super.onPageFinished(view, Url);
                                                                if (!new NetworkDetaction(PrimeLedgeWeb.this).isNetworkConnected()) {
                                                                    if (!Url.endsWith("loginui.aspx")) {
                                                                        webView.setVisibility(View.GONE);
                                        Toast.makeText(PrimeLedgeWeb.this, "Not connected to internet",
                                                Toast.LENGTH_SHORT).show();
                                    }
                                    else
                                        {
                                        webView.setVisibility(View.GONE);
                                    }
                                }
                                                                if (new NetworkDetaction(PrimeLedgeWeb.this).isNetworkConnected()) {
                                                                    webView.postDelayed(new Runnable() {
                                                                        @Override
                                                                        public void run() {
                                                                            webView.setVisibility(View.VISIBLE);
                                                                        }
                                                                    }, 1000);
                                                                }
                            }
                        });
                    }
                }
            }

        }
        else
            {
            Toast.makeText(this, "Check Network Connection", Toast.LENGTH_SHORT).show();
        }
    }

    private class CustomWebViewClient extends WebViewClient {

        @Override
        public void onPageStarted(WebView webview, String url, Bitmap favicon) {
//            progressBar.showProgressBar();
//            webview.setVisibility(webview.INVISIBLE);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
//
//            //progressBar.setVisibility(View.GONE);
//            progressBar.hideProgressBar();
//
//            view.setVisibility(webView.VISIBLE);
            super.onPageFinished(view, url);

        }
    }

    public class NetworkChangeReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(final Context context, final Intent intent) {
            //Log.v(LOG_TAG, "Receieved notification about network status");
            isNetworkAvailable(context);
        }

        public boolean isNetworkAvailable(Context context) {
            ConnectivityManager connectivity = (ConnectivityManager)
                    context.getSystemService(Context.CONNECTIVITY_SERVICE);
            if (connectivity != null) {
                NetworkInfo[] info = connectivity.getAllNetworkInfo();
                if (info != null) {
                    for (int i = 0; i < info.length; i++) {
                        if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                            isConnected = true;
                            if (isConnected) {
                            }
                            return true;
                        }
                        isConnected = false;
                    }
                } else {
                    isConnected = false;
                }
            }
            return isConnected;
        }
    }
}
javascript android webview fingerprint
1个回答
0
投票

是的,当然,您可以从javascript到活动获取信息。

JavaScriptInterface使用此界面,您可以在javascript和Android之间进行通信。

有关更多信息,例如,您可以visit它。

© www.soinside.com 2019 - 2024. All rights reserved.