i Mettre en place les nombreuses choses à l'aide de la webviewClient comme Onunhandledkeyevent, DépôtsOverriDeurlloading et plus.Si souhaitent ajouter le support pour Alertbox, puis devez passer à webchromeclient alors je ne peux pas faire d'autres choses. BR /> J'ai choisi le code de JavasRip Alert Box à http: // lexandera.com/2009/01/adding-alert-support-a-a-webview/ P>
Merci p>
3 Réponses :
Si vous souhaitez ajouter le support pour Alertbox, alors devez basculer sur webchromeclient puis je ne peux pas faire d'autres choses. P> blockQuote>
Vous pouvez avoir plus d'un objet dans la plupart des langages de programmation, y compris Java. Par conséquent, vous avez à la fois un
WebViewClient code> et em> a
webchromeclient code> comme objets distincts. P>
Implémenter le WebViewClient et Webchromeclient, tels que celui-ci
webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result) { new AlertDialog.Builder(mapp) .setTitle(R.string.title_dialog_alert) .setMessage(message) .setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() { public void onClick(DialogInterface dialog, int which) { result.confirm(); } }).setCancelable(false).create().show(); return true; } @Override public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) { new AlertDialog.Builder(mapp) .setTitle(R.string.title_dialog_confirm) .setMessage(message) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { result.confirm(); } }).setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { result.cancel(); } }).create().show(); return true; } @Override public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, final JsPromptResult result) { final LayoutInflater factory = LayoutInflater.from(mapp); final View v = factory.inflate(R.layout.javascript_prompt_dialog, null); ((TextView)v.findViewById(R.id.prompt_message_text)).setText(message); ((EditText)v.findViewById(R.id.prompt_input_field)).setText(defaultValue); new AlertDialog.Builder(mapp) .setTitle(R.string.title_dialog_prompt) .setView(v) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { String value = ((EditText)v.findViewById(R.id.prompt_input_field)).getText().toString(); result.confirm(value); } }) .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { result.cancel(); } }) .setOnCancelListener( new DialogInterface.OnCancelListener() { public void onCancel(DialogInterface dialog) { result.cancel(); } }) .show(); return true; }; });
Tout fonctionne bien! Un détail de plus: Confirmer la boîte de dialogue ne doit pas être annulable, ni avec l'auditeur d'événement d'annulation similaire à l'invite. Autre façon, il gèlera Webview, car cela attendra le résultat.
Vous devez définir webchromeclient fort> (cette poignée de dialogues JavaScript, de favicons, de titres et de la progression) pour votre webview fort>. WebView wView = new WebView(this){
@Override
public boolean onJsAlert(WebView view, String url, String message,
JsResult result) {
// TODO Auto-generated method stub
Log.i("my log","Alert box popped");
return super.onJsAlert(view, url, message, result);
}
};
setContentView(wView);
wView.getSettings().setJavaScriptEnabled(true);
WebChromeClient cClient = new WebChromeClient();
wView.setWebChromeClient(cClient);
wView.loadUrl("file:///android_asset/" + yourHtmlFile);
Exactement ce que je voulais! Merci. N'était pas au courant de la mettre en œuvre pour montrer à Jsstuff.
hey rubi ne peut pas comprendre que ce dont tu as besoin?
Je souhaite ajouter la prise en charge de Javascript Alertbox à WebViewClient pour ne pas utiliser le webchromeclient? Si vous ne comprenez pas, laissez ensuite publier le code