일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- pwable.kr
- 백준
- 클라우드란?
- 나이순 정렬
- 클라우드가 뭐야
- 쏘큩
- 포너블
- 애너그램 그룹
- col -1 from CursorWindow
- 10814
- cmd1
- python
- Docker
- Make sure the Cursor is initialized correctly before accessing data for it.
- pwnable.kr
- SQLiteConstraintException
- 6566
- 코틀린
- 파이썬
- java.lang.IllegalStateException
- cmd2
- Drive-By-Download
- tlqkf
- 블록체인
- pwnable
- 페니빙
- Couldn't read row 0
- 액션바 필요없숴
- kotlin
- UNIQUE constraint failed
- Today
- Total
푸르미르
[kotlin]나만의 웹브라우저를 만들기. 본문
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메소드이고,