푸르미르

[kotlin]나만의 웹브라우저를 만들기. 본문

Android

[kotlin]나만의 웹브라우저를 만들기.

((•_•)) 2021. 1. 20. 16:36

ui는 이렇다.

맨위에는 홈으로 가는, 즉 첫페이지로 구글페이지가 열리게끔 설정하였는데, 홈버튼 클릭시에 구글페이지로 가게 설정하였으며, 옆에 점이 세로로 되어있는 옵션바를 누를경우,

 

옵션바가 나오고 저기서 검색사이트를 클릭할 경우

 

흔하게 쓰이는 사이트가 나오며 저기서 한 사이트를 클릭하면 webView에 해당 사이트가 나오게 제작하였다.

또 개발자 정보라는 메뉴 아이템을 누를 경우

 

개발자와 컨택 할 수 있는 항목이 나오며 이중 하나를 클릭할 경우 암시적 인텐트로 인해 해당 기능을 하는 휴대폰의 기본 앱이 켜지게 된다.

예를 들어 전화하기를 클릭했을 경우,

 

휴대폰의 전화 앱이 켜지고 개발자의 전화번호가 뜨게 된다.

또 webView를 길게 눌렀을 경우,

 

이런식으로 컨텍스트 메뉴가 나오게 된다. 피이지 공유를 누를 경우 해당 페이지를 공유할 수 있게 되고, 기본 브라우저열기를 누를 경우 해당 폰의 기본 브라우저를 통해 사이트가 열린다. 

그리고 forward버튼과 back버튼이 있는데 back버튼을 누를경우 전페이지로 가는 기능이 실현되고, forward버튼을 누를 경우 앞으로 가기의기능이 실현된다. 

 

코드를 보기 전 인터넷을 사용해야하는 앱의 경우 앱의 권한을 설정해주어야 한다. 그래서 Manifest.xml파일에 가서 설정을 해주겠다.

 

이렇게 네트워크 및 인터넷 사용권한을 부여해줬다. 하지만 이대로 실행을 한다면 인터넷이 나의 앱에서 실행이 되지 않는다. 그 이유는 안드로이드9(APL Lv 28) 부터 강화된 네트워크 보안정책으로 인한 오류 때문이다. 그래서 이 오류를 해결해주기 위해 application태그안에 이 문장을 삽입해준다.

android:usesCleartextTraffic="true"

그렇게 되면 일단 Manifest파일에 대한 볼일은 끝이다.

 

먼저 메뉴에 대해 설명하겠다. 

맨위에 세로로 점3개가 콕콕 박혀있는 메뉴를 볼 수 있는데 그런 메뉴를 옵션메뉴라고 한다. 그리고 웹뷰를 클릭했을 때 주위 화면이 흐려지면서 메뉴가 나타나는데 그런 메뉴를 바로 컨텍스트 메뉴라고 한다. 이 둘의 구현방법은 다르다. 먼저 옵션메뉴를 작성한 XML파일을 main.xml이라고 하겠다. 그리고 컨텍스트메뉴를 작성한 파일을 context.xml이라 하겠다. 이 두 파일은 res디렉터리의 menu파일안에 있는 소스이다.

 

이 둘의 코드를 보자.

 

main.xml

 

 

context.xml

 

 

그리고 드디어 MainActivity.xml을 보자.

 

 

그리고 대망의 MainActivity.kt

 

웹뷰 기본 설정을 해야하는데 먼저 settings.javaScriptEnabled = true을 해서 그 기능을 키고, webViewClient = WebViewClient()을 하다. 이것을 하지 않으면 해당 앱에서 페이지가 표시되지 않고 그 자체 웹브라우저가 작동하기 때문에 꼭 필요하다.

 

그 아래에는 키보드의 검색 버튼을 눌렀을 때 앱에서 실행해야하는 동작을 정의하였다. 

 

context.xml에서 설정한 컨텍스트 메뉴를 앱의 webView에 적용시키기 위해  registerForContextMenu를 이용하였다.

그 후 뒤로가기 버튼을 눌렀을 때 시행할 동작과 앞으로가기 버튼을 눌렀을 때 시행해야 할 동작을 등록해준다.

 

여기까지가 onCreate메소드이고,