Сообщение от cyberblut
Ох Ступил ты на тёмную сторону силы. Как же я ненавижу гугл с его долбоандроидом за то, что приходится иногда вытворять, чтобы это дерьмо работало. Наверное разработчики этой шняги трахаются с собаками периодически.
|
сначала прочитал часть фразы "Ступил ты..." и хотел было обидеться, но не смог, потому что действительно ступил, ступая на темную сторону. ибо собак я не люблю, а в сексе придерживаюсь традиционных взглядов, что разработчиками андроида явно не приветствуется.
хочу сказать большое спасибо за решение проблемы, ибо в этом вопросе, похоже ни здравый смысл, ни преподобный гугл на путь истинный наставить меня не смогли бы.
маленький подарок любителям копипаста:
package ru.jru.sru;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class RegActivity extends Activity {
private class WebViewInjector {
public String processBody(String body) {
// если на странице есть NOT FOUND, то закрываем недобраузер
int p = body.toLowerCase().indexOf("not found");
int l = body.length();
if ((p >= 0)&&(p < l)) {
finish();
}
return body;
}
}
private class wvClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// открываем внешние ссылки в том же недобраузере
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished (WebView view, String url) {
// просматриваем содержимое страницы (в нашем случае секция body)
super.onPageFinished(view, url);
wvReg.loadUrl("javascript:window.WebInjector.processBody(document.getElementsByTagName('body')[0].innerHTML);");
}
}
public WebView wvReg; // наш недобраузер
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.regform);
wvReg = (WebView)findViewById(R.id.wvReg);
wvReg.getSettings().setJavaScriptEnabled(true);
wvReg.addJavascriptInterface(new WebViewInjector(), "WebInjector");
wvReg.setWebViewClient(new wvClient());
wvReg.loadUrl("http://www.mysite.ru");
}
// возврат на предыдущую страницу по нажатию аппаратной кнопки back
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK) && wvReg.canGoBack())
{
wvReg.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}