package com.example.webviewexample;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.webkit.CookieSyncManager;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;
import java.io.IOException;
import okhttp3.Callback;
import okhttp3.Response;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private HttpConnection httpConn = HttpConnection.getInstance();
private WebView webView;
private String url = "
https://www.naver.com";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sendData();
webView = (WebView) findViewById(R.id.webView);
//webView.getSettings().setJavaScriptEnabled(true);
//WebSettings webSettings = webView.getSettings();
//webSettings.setUserAgentString("Mozilla/5.0 (Linux; Android 7.1.1; Moto G Play) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.143 Mobile Safari/537.36");
//webView.setWebChromeClient(new WebChromeClient());
//webView.setWebViewClient(new WebViewClientClass());
if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
CookieSyncManager.createInstance(this);
}
webView.setWebViewClient(new WebClient());
WebSettings set = webView.getSettings();
set.setUserAgentString("Mozilla/5.0 (Linux; Android 10; LM-V500s) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.101 Mobile Safari/537.36");
set.setJavaScriptEnabled(true);
set.setBuiltInZoomControls(true);
set.setDomStorageEnabled( true );
webView.loadUrl(url);
}
private void sendData() {
// 네트워크 통신하는 작업은 무조건 작업스레드를 생성해서 호출 해줄 것!!
new Thread() {
public void run() {
// 파라미터 2개와 미리정의해논 콜백함수를 매개변수로 전달하여 호출
httpConn.requestWebServer("데이터1","데이터2", callback);
}
}.start();;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
private final Callback callback = new Callback() {
@Override
public void onFailure(okhttp3.Call call, IOException e) {
Log.d(TAG, "콜백오류:"+e.getMessage());
}
@Override
public void onResponse(okhttp3.Call call, Response response) throws IOException {
String body = response.body().string();
Log.d(TAG, "서버에서 응답한 Body:"+body);
}
};
@Override
public void onStart() {
super.onStart();
CookieSyncManager.createInstance(this);
}
@Override
protected void onPause() {
super.onPause();
if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
CookieSyncManager.getInstance().stopSync();
}
}
@Override
protected void onResume() {
super.onResume();
if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
CookieSyncManager.getInstance().startSync();
}
}
class WebClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
public void onPageFinished(WebView view, String url) {
CookieSyncManager.getInstance().sync();
}
}
}
안드로이드 공부한지 7일차라 어렵네요. 알려주시면 안될까요?
웹뷰로 네이버를 접속하여 어느 링크를 클릭하든, 네이버와 통신이 되기를 원합니다.
shouldOverrideUrlLoading 로 네이버 블로그,카페,지식인등등
네이버 플랫폼에 있는 어느 컨텐츠를 클릭해도 네이버 서버와 통신이 되기를 원합니다.
제가 만든 웹뷰로 제 네이버 블로그에 접속해도 블로그 통계로 접속한 흔적이 없더라구요.