![](/img/trans.png)
[英]Blank page when trying to do a facebook login inside an android webview app
[英]auto login in webview returns blank page with the username
我正在尝试制作一个要在Webview上加载和显示网页的应用程序,我希望用户不必多次登录即可运行该应用程序,因此我想自动填写“用户名”和“密码”字段。 我尝试了很多在google中找到的方法,但是其中一些方法不起作用,用户名和密码字段仍然为空,而其他方法只是使用用户名值打开空白页面。
这是我要自动记录的网页代码的一部分:
<form action="#" onSubmit="MAIN.doAuth(); return false;"> <div class="user_id"> <label for="user_id">User ID</label> <div class="text_frame"> <input id="user_id" type="text" value="" maxlength="20"> <span class="button_clear_text" onclick=""></span> </div> </div> <div class="password"> <label for="password">Password</label> <div class="text_frame"> <input id="password" type="password" value="" maxlength="20"> <span class="button_clear_text" onclick=""></span> </div> </div> <div class="submit"> <input id="button_login" type="submit" value="LOGIN"> </div> </form>
这是我的mainActivity:
public class FirstScreenActivity<DrawerLayout> extends Activity {
ArrayAdapter adapter;
private DrawerLayout mDrawerLayout;
public String[] names;
public String username = "oscar";
private ListView mDrawerList;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.first_screen);
View header = (View) getLayoutInflater().inflate(R.layout.cabecera, null);
View footer = (View) getLayoutInflater().inflate(R.layout.footer, null);
this.mDrawerList = (ListView) findViewById(R.id.left_drawer); // list view
// Load an array of options names
names = getResources().getStringArray(
R.array.nav_options);
// Set previous array as adapter of the list
/* ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, names);*/
mDrawerList.addHeaderView(header);
mDrawerList.addFooterView(footer);
adapter = new AdaptadorList(
this,
DataSource.TAREAS);
mDrawerList.setAdapter(adapter);
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
WebView webView = (WebView) this.findViewById(R.id.webview);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setDomStorageEnabled(true);
webView.loadUrl("https://m-komtrax.komatsu.co.jp/m/klc/c/");
//webView.loadUrl("http://www.google.com");
webView.setWebViewClient(new WebViewClient(){
/* @Override
public boolean shouldOverrideUrlLoading(WebView v, String url) {
v.loadUrl(url);
return true;
}*/
@Override
public void onPageFinished(WebView v, String url) {
v.loadUrl("javascript:document.getElementsById('password').value = 'username';");
//v.loadUrl("javascript: document.getElementById('user_id').innerHTML = 'hello';");
//v.loadUrl("javascript:document.querySelector('input[id=user_id]').value = '"+ username +"';");
//v.loadUrl("javascript:document.forms['login'].submit()");
}
});
}
请帮助我,我需要在用户名和密码字段中填写我之前要存储的值。 谢谢
我遇到了一个非常类似的问题。解决方案是在onPageFinished方法添加此行代码后,只需一行代码即可调用super类使用super关键字。
super.onPageFinished(view, url);
仅此而已,希望对和平有所帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.