<WebView
java에서 불러써야하니까 id임명
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"-> 부모의 길이만큼
android:layout_height="match_parent"/>
string url 은 webView를 틀때 어떤 주소로 지정해주느냐
private WebView webView;
private String url = "https://www.naver.com";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView)findViewById(R.id.webView); //findViewById(R.id. 이게뭔지 공부해야할듯
webView.getSettings().setJavaScriptEnabled(true);
// 자바스크립트를 허용해주자는 옵션을 넣음
webView.loadUrl(url);
// 특정url주소를 연결
webView.setWebChromeClient(new WebChromeClient());
//크롬세팅
webView.setWebViewClient(new WebViewClientClass());
//일반적인 클라이언트 세팅
//뒤로가기를 눌렀을대 정상동작 시키기
//특정 키 눌렀을때 동작을 지정해주는 함수 onKeyDown
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()){
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
KEYCODE_BACK 이 뒤로가기 버튼
뒤로가기를 눌렀을때 뒤로갈 수 있게 되면, 웹뷰를 뒤로가게 해라 라는 코드
WebViewClientClass()오류를alt+enter해서 inner class 해줌
private class WebViewClientClass extends WebViewClient {
ctrl+O해서 shouldOverrideUrlLoading를 찾아줌
현재 페이지의 url을 읽어올 수 있는 메소드
이걸 이용해서 새 창을 읽거나, 특정페이지에서 특수한 기능을 넣을 수도있음.
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
manifast들어가서 인터넷 권한 설정해줘야함.
인터넷 권한없으면 webView안틀어줌
<uses-permission android:name="android.permission.INTERNET"/>
결과!
xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
java
package com.example.webviewexample;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends AppCompatActivity {
private WebView webView;
private String url = "https://www.naver.com";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView)findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
// 자바스크립트를 허용해주자는 옵션을 넣음
webView.loadUrl(url);
// 특정url주소를 연결
webView.setWebChromeClient(new WebChromeClient());
//크롬세팅
webView.setWebViewClient(new WebViewClientClass());
//일반적인 클라이언트 세팅
}
//뒤로가기를 눌렀을대 정상동작
@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 class WebViewClientClass extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
manifast
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.webviewexample">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:usesCleartextTraffic="true"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.WebViewExample">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
'✍2021,2022 > app(android studio)' 카테고리의 다른 글
앱만들기10. (카메라) (0) | 2021.07.12 |
---|---|
앱만들기 9. (Navigation Menu 커스텀) (0) | 2021.07.12 |
앱만들기7(SharedPreferences) (0) | 2021.07.11 |
앱만들기6 (0) | 2021.07.10 |
앱만들기5.(ListView) (0) | 2021.07.08 |