WebView 가 URL 을 통 해 H5 인 터 페 이 스 를 불 러 오 는 공백 문 제 를 해결 합 니 다.
2.기본 설정 문제
WebSettings webSettings = webView.getSettings(); //크기 조정 을 지원 합 니 다.기본 값 은 true 입 니 다.
.setUseWideViewPort(true); // 화면 크기 로 크기 조정 웹 설정
.setLoadWithOverviewMode(true); //기본 인 코딩 설정
webSettings .setDefaultTextEncodingName("utf-8"); ////그림 자동 불 러 오기 설정
webSettings .setLoadsImagesAutomatically(true);
.settings.setJavaScriptEnabled(true);// JS 스 크 립 트 실행 가능 설정
.settings.setSupportZoom(false);// 웹 뷰 확대 설정 에 사용
.settings.setBuiltInZoomControls(false);
3.Uncaught TypeError 발생:null 이상 의 method'getItem'을 호출 할 수 없습니다.
이 줄 에 이상 이 생 겼 습 니 다.이것 은 바로 html 5 의 특성 입 니 다.로 컬 에 저 장 된 것 은 쿠키 보다 저장량 이 많 지만 이것 은 안 드 로 이 드 의 webview 에서 코드 로 시작 해 야 합 니 다.
해결 방법:웹 뷰 의 html 5 로 컬 저장 기능 을 시작 합 니 다.
webview.getSettings().setDomStorageEnabled(true);
webview.getSettings().setAppCacheMaxSize(1024*1024*8);
String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
webview.getSettings().setAppCachePath(appCachePath);
webview.getSettings().setAllowFileAccess(true);
webview.getSettings().setAppCacheEnabled(true);
4.getDeviceID 방법 을 호출 할 때 js 가 불 러 오지 않 아 공백 이 발생 합 니 다.
해결 방법:
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// js
if(!flag_get_deviceid){
load();
}
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}
});
private boolean flag_get_deviceid=false;
public void load(){
String key="";
String androidID="";
try{
androidID = Secure.getString(getContentResolver(),Secure.ANDROID_ID);
Log.d(TAG, "androidID:"+androidID);}catch(Exception e){
Log.e(TAG, "");
}finally{
String script=String.format("javascript:getDeviceID('"+androidID+"')");
webActDetail.evaluateJavascript(script, new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
Log.d(TAG, "onReceiveValue value=" + value);
if(value!=null){
flag_get_deviceid=true;
}
}});
}
}
5.안 드 로 이 드 핸드폰 버 전 문제,현재 H5 화면 이 다양 해 지면 서 많은 H5 화면 이 저 버 전의 기종 에서 보 여주 지 못 하거나 스타일 이 어 지 럽 습 니 다.해결 방법:하 나 는 낮은 버 전의 h5 인터페이스 를 재 설계 하고 다른 하 나 는 프로젝트 의 최저 버 전 을 설정 하 는 것 이다.
추가 지식:WebView-WebView 를 사용 하여 Url 목록 에 순서대로 접근
때때로,우 리 는 웹 뷰 를 사용 하여 차례대로 Url 목록 을 방문 하여 웹 페이지 를 새로 고 쳐 야 한다.
1.1 WebView 생 성
webView = (WebView) findViewById(R.id.webview);
1.2 WebView 설정 매개 변수
//
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//
// webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
//
webView.clearCache(true);
//
webView.clearHistory();
// cookies
CookieSyncManager.createInstance(this);
CookieSyncManager.getInstance().startSync();
CookieManager.getInstance().removeSessionCookie();
//
webView.getSettings().setSupportZoom(true);
//
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setJavaScriptEnabled(true);
1.3 Url 목록 가 져 오기
int index = 0;
String [] strList = new String[]{"https://www.jb51.net",
"https://www.jd.com","https://www.csdn.net",https://www.baidu.com};
1.4 WebView 설정 WebViewClient
// WebViewClient
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
index++;
if(index>artStr.length){
}else {
webView.clearCache(true);
webView.clearView();
Log.i("===onPageFinished====", index + "=======");
refreshWebpage(index);
}
}
});
1.5 WebView 로 딩 Url
public void refreshWebpage(int index) {
String csdnStr = urlStr + artStr[index];
// url
webView.loadUrl(csdnStr);
}
웹 뷰 가 URL 을 통 해 H5 인 터 페 이 스 를 불 러 오 는 데 공백 이 생기 는 문 제 를 해결 한 것 은 바로 편집장 님 께 서 여러분 께 공유 해 주신 모든 내용 입 니 다.참고 해 주시 고 많은 성원 부 탁 드 리 겠 습 니 다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
웹View 로드 경로에 있는 그림이 표시되지 않음이전 코드 수정 수정된 코드 한 마디 더 했어요. 사실 중요한 건 이 두 마디...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.