Я пишу приложение для Android (Android 2.3.3 / API 10), в котором я загружаю веб-сайты через WebView. Глядя на исходный код android.webkit.webview, в частности onSavePassword (...) (вы можете найти его ЗДЕСЬ ), я хотел бы запустить свой собственный AlertDialog вместо стандартного
и применить мои изменения, или мне нужно отредактировать исходный код android.webkit.webview и перекомпилировать android.jar?
Я должен был объяснить ранее, что пытался что-то подобное безуспешно:
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 (String, String, String, Message) типа MainActivity.MyWebView должен переопределить метод суперкласса» и говорит мне удалить @Override. И измененный диалог не берет.
Еще раз спасибо
EDIT
Метод, который я хочу изменить, т.е. onSavePassword (...) в андроиде webview.class не имеет модификатора, связанного с ним. Я думаю, это означает, что этот метод доступен только для классов, которые находятся в одном пакете. Как я уже упоминал ранее, я пытаюсь создать свой собственный класс webview, который расширяет класс stock, но он не находит onSavePassword. Любые идеи или примеры других расширений класса webView, которые могут указать мне правильное направление?