2012. 6. 21. 17:55 안드로이드

웹뷰를 하다가 네이버에서 기사를 보고 거기에 연관되 기사를 보는데 

그거 다보고 취소키눌러 다시 네이버 기사로 갈려니 안돌아가 .. 

계속 그 페이지만 로딩하는거야 !!


뭔 일이래 .. 보니깐 


네이버 관련 기사 링크가 이거야 

http://www.munhwa.com/news/view.html?no=2012062001030827062002 

이런 url로 가는데 이게 분기가 되버리네 

http://m.munhwa.com/mnews/view.html?no=2012062001030827062002  


그래서 웹뷰에서 기사 보다가 취소키 누르면 http://www.munhwa.com/news/view.html?no=2012062001030827062002  이리로 갔다가 다시 이놈이 http://m.munhwa.com/mnews/view.html?no=2012062001030827062002  이걸 호출 해주시니 ...

뭐 계속 로딩 로딩 



그래서 꼼수가 ..



빽기 눌릴때 지금 보고 있는 url을 저장하는거야 



@Override

public boolean onKeyDown(int keyCode, KeyEvent event)

{

// TODO Auto-generated method stub

if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN)

{


if (getWebView(page - 2).canGoBack()) {

 

link = getWebView(page - 2).getUrl();


getWebView(page - 2).goBack();


return true;

}

}


}

return super.onKeyDown(keyCode, event);


}



그러고 여기에 서 진가를 발휘하는거지 


WebViewClient mWebViewClient = new WebViewClient()

{


@Override

public boolean shouldOverrideUrlLoading(WebView view, String url)

{


setProgressbar(view.getId(), 0);


//백기 눌렀을때 저장했던 url이 지금 로딩 할려고 하는 url이랑 같냐 ? 그럼 로딩하지 말고 백 한번 더해라 

if (link != null && link.equals(url))

view.goBack();

else//이건 보통의 경우고

view.loadUrl(url);


return true;

}

}


아 .. 이거 때문에 머리 터지는 줄알았네 .. 

난 안드로이드에서 뭔가 대단한걸 재공 해주는줄 알았더니 ..만 .. 개뿔 ... 없음..



웹뷰 하다가 보니깐 


요렇게 찍으니깐 히스토리가 다 나왔다 

이걸로 디버그 하니깐 괜찮드라 

WebBackForwardList a = getWebView(page - 2).copyBackForwardList();

for (int i = 0; i < a.getSize(); i++)

{

WebHistoryItem h = a.getItemAtIndex(i);


int idx = a.getCurrentIndex();


Log.i("goback",

"onKeyDown (getOriginalUrl) " + h.getOriginalUrl() + " (getTitle) " + h.getTitle()

+ " (getUrl) " + h.getUrl() + " (idx) " + idx + " (getid) " + h.getId()

+ " (i) " + i);


}






posted by 욱이다