Javascript 是否可以将登录信息从webview传递到android活动?
我有一个网站,它是通过网络视图加载到android应用程序中的。每当启动应用程序时,在启动屏幕后加载webview并显示登录页面(在webview中),此页面包含两个文本框,一个用于用户名,另一个用于密码。成功登录后,会话启动,网页加载良好。 现在,我想将登录信息,即用户名和密码从该登录页面(在webview中显示)获取到我的android活动中 获取此登录信息的原因: 实际上,我想获取这些值,因为我需要添加指纹身份验证选项以及用户名和密码。我想为用户提供两个选项,即使用用户名/密码或指纹登录 我怎样才能达到这种情况?据我所知,通过webview向用户提供这两个选项是不可能的,因为只有本机android应用程序才能实现这一点。所以请指导我 我尝试了许多解决办法,但都没有成功Javascript 是否可以将登录信息从webview传递到android活动?,javascript,android,webview,fingerprint,Javascript,Android,Webview,Fingerprint,我有一个网站,它是通过网络视图加载到android应用程序中的。每当启动应用程序时,在启动屏幕后加载webview并显示登录页面(在webview中),此页面包含两个文本框,一个用于用户名,另一个用于密码。成功登录后,会话启动,网页加载良好。 现在,我想将登录信息,即用户名和密码从该登录页面(在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;
}
}
}
公共类PrimeLedgeWeb扩展了AppCompatActivity{
网络视图;
字符串imei,url;
布尔不连通;
WP10ProgressBar progressBar;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u prime\u ledge\u web);
webView=(webView)findViewById(R.id.webViewPrime);
progressBar=(WP10ProgressBar)findViewById(R.id.wp7progressBar);
progressBar.showProgressBar();
setWebViewClient(新的CustomWebViewClient());
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
webView.setOverScrollMode(webView.OVER\u SCROLL\u NEVER);
if(Connection.checkConnection(getApplicationContext()))
{
initGUI();
}
否则{
Toast.makeText(PrimeLedgeWeb.this,“在继续之前确保连接到Internet!”,Toast.LENGTH\u SHORT.show();
}
}
public void initGUI(){
TelephonyManager TelephonyMgr=(TelephonyManager)getSystemService(电话服务);
if(ActivityCompat.checkSelfPermission(this,Manifest.permission.READ\u PHONE\u STATE)!=PackageManager.permission\u已授予){
ActivityCompat.requestPermissions(这是新字符串[]{android.Manifest.permission.READ_PHONE_STATE},0);
}
否则{
imei=TelephonyMgr.getDeviceId();
}
IntentFilter筛选器=新的IntentFilter(ConnectionManager.CONNECTIVITY_操作);
PrimeLedgeWeb.NetworkChangeReceiver=新PrimeLedgeWeb.NetworkChangeReceiver();
寄存器接收器(接收器、过滤器);
NetworkDetaction NetworkDetaction=新的NetworkDetaction(此);
if(networkDetaction.isNetworkConnected()){
最终URLRequest URLRequest=新的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(新建NetworkDeAction(PrimeLedgeWeb.this).isNetworkConnected()){
if(urlRequest.url==null){
loadUrl(url);
webView.getSettings().setLoadsImagesAutomatically(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.setScrollBarStyle(视图.滚动条\u内部\u覆盖);
setWebViewClient(新的WebViewClient(){
@凌驾
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串Url){
如果(Url!=Url){
loadUrl(Url);
}
返回true;
}
@凌驾
public void onPageStarted(WebView视图、字符串url、位图favicon){
setVisibility(webView.INVISIBLE);
}
@凌驾
公共void onPageFinished(最终WebView视图,字符串Url){