내 Android 앱 webview
은 크롬 버전 61 또는 62에서는 잘 작동하지만 버전 63으로 업데이트하면 작동합니다. 내 webview
은 기록을 저장하지 않으며 webView.canGoBack()
은 항상 false
을 반환합니다. 그러나 이전 버전의 크롬은 잘 작동합니다. 어떻게 해결할 수 있습니까?WebView Android 내역 내역 Chrome 안정 버전을 업데이트 할 때
2
A
답변
0
심지어이 문제에 직면했습니다. 지금은 ouldOverrideUrlLoading (WebView view, String url) {} 함수에서 intent를 사용할 수 있으며 super.onbackpressed()는 히스토리를 유지 관리하기 위해 작업을 수행합니다.
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent intent = new Intent(MainActivity.this, MainActivity.class);
intent.putExtra("postUrl", url);
startActivity(intent);
return true;
}
2
이 문제는 크롬의 버그입니다. 우리는 앱에서 같은 문제를 발견합니다. 이 문제의 이유는 shouldOverrideUrlLoading 메소드에서 Webview의 loadUrl 메쏘드를 호출 할 때 웹 뷰가 크롬 버전으로 돌아갈 수 없기 때문입니다. 아래 코드는 내 해결 방법입니다.
public class WebViewBugFixDemo extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// todo : set your content layout
final WebView webView = (WebView) findViewById(R.id.webview);
final String indexUrl = "http://www.yourhost.com";
final String indexHost = Uri.parse(indexUrl).getHost();
webView.loadUrl(indexUrl);
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (isSameWithIndexHost(url, indexHost)) {
return false;
}
view.loadUrl(url);
return true;
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && request != null && request.getUrl() != null) {
String url = request.getUrl().toString();
if (isSameWithIndexHost(url, indexHost)) {
return false;
}
view.loadUrl(url);
return true;
}
return super.shouldOverrideUrlLoading(view, request);
}
});
}
/**
* if the loadUrl's host is same with your index page's host, DON'T LOAD THE URL YOURSELF !
* @param loadUrl the new url to be loaded
* @param indexHost Index page's host
* @return
*/
private boolean isSameWithIndexHost(String loadUrl, String indexHost) {
if (TextUtils.isEmpty(loadUrl)) {
return false ;
}
Uri uri = Uri.parse(loadUrl) ;
Log.e("", "### uri " + uri) ;
return uri != null && !TextUtils.isEmpty(uri.getHost()) ? uri.getHost().equalsIgnoreCase(indexHost) : false ;
}
}
+0
이것은 [BUG] (http://crbug.com/794020)와 관련이 있습니다. 해결 방법이 작동하고 확인되었습니다. 'loadUrl()'과 함께 추가 헤더를 추가하는 데 사용됩니다. 이 대안으로 해결할 수 없습니다. – hQuse
관련 문제
- 1. Symfony + Composer 업데이트 내역
- 2. 파일의 업데이트 내역 만들기
- 3. VIM 내역 내역 무시
- 4. 복제본/내역 내역
- 5. 목록 내역 색인 내역
- 6. Android NDK 사용 내역
- 7. Viewpager로 활동 내역 android
- 8. Android 다운로드 내역
- 9. 서브 버전 리포지토리 내역 업데이트
- 10. Android 액티비티 스택 탐색 내역
- 11. android : 앱 청구 내역 RESULT_SERVICE_UNAVAILABLE
- 12. PubNub 사용 내역 Android API
- 13. Git 내역 그래프와 SVN 내역 그래프
- 14. 내역 배열
- 15. COMException 내역
- 16. 활동 내역
- 17. 일별 내역
- 18. 주별 내역
- 19. QFileDialog 내역
- 20. 상속 내역
- 21. 활성 레코드 감사 내역
- 22. 가져 오기 내역
- 23. 보고서 생성기 테스트 내역 기록에 내역 데이터를 가져 오는 방법
- 24. smartGit의 변경 내역 전체보기
- 25. 리포지토리 전반의 기록 내역
- 26. 작업 디렉토리 내역
- 27. 파일 복사 및 전체 내역
- 28. Google Play 구매 내역
- 29. 삭제 된 .gs 파일의 업데이트 내역
- 30. MySQL 업데이트/삽입 : 내역 데이터 복사
제 경우에는 끝없이 새로운 의도를 만듭니다. – hQuse