상세 컨텐츠

본문 제목

안드로이드 앱 기술보완_3

안드로이드+드론 제작

by 김일국 2019. 11. 6. 15:39

본문

안드로이드 앱 기술보완_3 지난 포스트에 이이서 나만의 웹브라우저 앱 만들기 마무리 입니다.

작업한 핵심 소스는 아래와 같습니다. 코틀린 언어로 작업하니 편하긴 합니다.^^
아래는 MainActivity.kt 소스전문

package biz.time_space.timebrowser

import android.content.Intent
import android.net.Uri
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.ContextMenu
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.view.inputmethod.EditorInfo
import android.webkit.WebViewClient
import kotlinx.android.synthetic.main.activity_main.*
import org.jetbrains.anko.browse
import org.jetbrains.anko.email
import org.jetbrains.anko.sendSMS
import org.jetbrains.anko.share

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

webView.apply {
settings.javaScriptEnabled = true
webViewClient = WebViewClient()
}
webView.loadUrl("https://google.com")

uriEditText.setOnEditorActionListener { v, actionId, event ->
if(actionId == EditorInfo.IME_ACTION_SEARCH) {
webView.loadUrl(uriEditText.text.toString())
true
} else {
false
}
}

registerForContextMenu(webView)
}

override fun onBackPressed() {
if(webView.canGoBack()) {
webView.goBack()
} else {
super.onBackPressed()
}
}

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.main, menu)
return true
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item?.itemId) {
R.id.action_google, R.id.action_home -> {
webView.loadUrl("https://google.com")
return true
}
R.id.action_naver -> {
webView.loadUrl("https://naver.com")
return true
}
R.id.action_daum -> {
webView.loadUrl("https://daum.net")
return true
}
R.id.action_call -> {
val intent = Intent(Intent.ACTION_DIAL)
intent.data = Uri.parse("tel:010-1234-1234")
if(intent.resolveActivity(packageManager) != null) {
// != 의 합자는 네이버D2폰트의 Ligature문자로 표시.
// 해당정보: https://dschci.tistory.com/107
startActivity(intent)
}
return true
}
R.id.action_sms -> {
sendSMS("010-1234-1234", webView.url)
return true
}
R.id.action_email -> {
email("kimilguk@knou.ac.kr", "타임스페이스", webView.url)
return true
}
}
return super.onOptionsItemSelected(item)
}

override fun onCreateContextMenu(
menu: ContextMenu?,
v: View?,
menuInfo: ContextMenu.ContextMenuInfo?
) {
super.onCreateContextMenu(menu, v, menuInfo)
menuInflater.inflate(R.menu.context, menu)
}

override fun onContextItemSelected(item: MenuItem): Boolean {
when (item?.itemId) { //? 는 인자값이 null일때 에러 발생방지
R.id.action_share -> {
share(webView.url)
}
R.id.action_browser -> {
browse(webView.url) //코틀린 앙코 라이브러리 에서 지원하는 intent 매서드
}
}
return super.onContextItemSelected(item)
}
}

작업결과 갤럭시 S1 실행 콘텍스트메뉴 화면(아래)

작업한 소스:

TimeBrowser.zip


Ps. 앞으로 작업 : 실습 5장 비만도 측정기 앱 제작

TimeBrowser.zip
0.6MB

관련글 더보기

댓글 영역