我正在写一个Android应用程序(android 2.3.3/API 10),通过WebView加载网站。看看android.webkit.webview源代码,特别是onSavePassword(...)(你可以找到它HERE)我想发起我自己的自定义AlertDialog而不是股票一个 并应用我的更改,或者我必须编辑android.webkit.webview源码并重新编译android.jar?定制Android Webview类
我应该早点解释说,我试图这样的事没有成功:
class MyWebView extends WebView {
public MyWebView(Context context) {
super(context);
}
@Override
boolean onSavePassword(String schemePlusHost, String username, String password, final Message resumeMsg) {
boolean rVal = false;
if (resumeMsg == null) {
// null resumeMsg implies saving password silently
} else {
final Message remember = mPrivateHandler.obtainMessage(REMEMBER_PASSWORD);
remember.getData().putString("host", schemePlusHost);
remember.getData().putString("username", username);
remember.getData().putString("password", password);
remember.obj = resumeMsg;
final Message neverRemember = mPrivateHandler.obtainMessage(NEVER_REMEMBER_PASSWORD);
neverRemember.getData().putString("host", schemePlusHost);
neverRemember.getData().putString("username", username);
neverRemember.getData().putString("password", password);
neverRemember.obj = resumeMsg;
new AlertDialog.Builder(getContext())
.setTitle("My Custom Title")
.setMessage("My Custom Save/Don't Save Dialog Message")
.setPositiveButton(com.android.internal.R.string.save_password_notnow,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
resumeMsg.sendToTarget();
}
})
.setNeutralButton(com.android.internal.R.string.save_password_remember,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
remember.sendToTarget();
}
})
.setNegativeButton(com.android.internal.R.string.save_password_never,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
neverRemember.sendToTarget();
}
})
.setOnCancelListener(new OnCancelListener() {
public void onCancel(DialogInterface dialog) {
resumeMsg.sendToTarget();
}
}).show();
// Return true so that WebViewCore will pause while the dialog is
// up.
rVal = true;
}
return rVal;
}
Eclipse的正当要求“的方法onSavePassword类型MainActivity.MyWebView的(字符串,字符串,字符串,消息)必须重写超类方法“,并告诉我删除@Override。并且更改后的对话框不需要。
再次感谢
编辑
我想改变,即方法。 android webview.class中的onSavePassword(...)没有与其关联的修饰符。我认为这意味着这种方法只能被驻留在相同包中的类访问。正如我之前提到的,我尝试创建自己的webview类来扩展库存类,但它没有找到onSavePassword。任何想法,或webView类的其他扩展的例子可能指向正确的方向?
感谢您的提示,我只是尝试执行@Override是这样的:私人类MyWebViewClient扩展WebViewClient {} – 2012-02-16 19:40:34
重写是不是继承类。Overiding意味着在子类中重新定义一个从sueprclass继承的方法。 – Snicolas 2012-02-16 20:46:26