๐ SeSAC์ 'JetPack๊ณผ Kotlin์ ํ์ฉํ Android App ๊ฐ๋ฐ' ๊ฐ์ข๋ฅผ ์ ๋ฆฌํ ๊ธ ์ ๋๋ค.
์๋๋ก์ด๋์๋ ์ปดํฌ๋ํธ
๋ผ๊ณ ๋ถ๋ฆฌ๋ ํด๋์ค๊ฐ ์๋ค.
์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑ์์
์ฐ๋ฆฌ๊ฐ ํ๋์ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค๋ฉด, ์ด ์ดํ๋ฆฌ์ผ์ด์
์ ์ฐ๋ฆฌ๊ฐ ๋ง๋ค์ด ๋์ ๋ช๋ช ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ์ด ๋๋ค. ์ฆ, ์ปดํฌ๋ํธ
๋ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ์ดํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ฑ์์๊ฐ ๋๋ค.
๊ทธ๋ผ ์ปดํฌ๋ํธ๋ฅผ ์ค์ ์ด๋ค ๋ชจ์ต์ผ๋ก ๊ฐ๋ฐ ๋ ๊น?
ํด๋์ค
๋ก ๊ฐ๋ฐ๋๋ค. ๊ฐ๋ฐ์๊ฐ ๋ง๋๋ ํด๋์ค๊ฐ ๊ณง ์ปดํฌ๋ํธ
์ธ ๊ฒ์ด๋ค.
๊ทธ๋ผ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ๋ชจ๋ ํด๋์ค๊ฐ ์ปดํฌ๋ํธ
๊ฐ ๋๋ ๊ฑธ๊น?
-> ์๋๋ค.
์ปดํฌ๋ํธ ํด๋์ค
์ ์ผ๋ฐ ํด๋์ค
๋ก ๊ตฌ๋ถ๋๋ค. ์ด ๋์ ๊ตฌ๋ถ ๊ธฐ์ค์ ๋ผ์ดํ์ฌ์ดํด
์ด๋ค.
์ปดํฌ๋ํธ ํด๋์ค
์ ๋ผ์ดํ์ฌ์ดํด์ ์์คํ
์์ ๊ด๋ฆฌํ๋ค.
์ผ๋ฐ ํด๋์ค
์ ๋ผ์ดํ์ฌ์ดํด์ ๊ฐ๋ฐ์ ์ฝ๋์์ ๊ด๋ฆฌํ๋ค.
๊ฐ๋จํ๊ฒ ๋งํ๋ฉด, ๊ฐ๋ฐ์ ์ฝ๋์์ ๊ฐ์ฒด ์์ฑ์ด ๋๋ ํด๋์ค๋ ์ผ๋ฐ ํด๋์ค์ด๋ค.
์ปดํฌ๋ํธ์๋ 4์ข ๋ฅ๊ฐ ์๋ค.
Activity
- ํ๋ฉด ์ถ๋ ฅ ๋ฅ๋ ฅ
Service
- ์ฅ์๊ฐ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์
๋ฅ๋ ฅ
BroadcastReceiver
- ์ด๋ฒคํธ ๋ชจ๋ธ๋ก ์คํ๋๋ ์ปดํฌ๋ํธ (์ฌ๊ธฐ์ ์ด๋ฒคํธ ๋ชจ๋ธ์ด๋ ์์คํ
์ด๋ฒคํธ๋ฅผ ์๋ฏธํ๋ค.)
ContentProvider
- ์ฑ ๊ฐ์ ๋ฐ์ดํฐ ๊ณต์ ๋ฅ๋ ฅ
์ดํ๋ฆฌ์ผ์ด์ ๋ด์์ ์ปดํฌ๋ํธ ๊ตฌ์ฑ์ ๊ฐ๋ฐ์ ์ ํ ์ฌํญ์ด๋ค.
A ์ฒ๋ผ ํ๋์ ํ๋ฉด ์ถ๋ ฅ๋ง ํ ์๋ ์๊ณ B ์ฒ๋ผ 3๊ฐ์ ํ๋ฉด ์ถ๋ ฅ๋ง ํ ์๋ ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ปดํฌ๋ํธ ๊ตฌ์ฑ์ผ๋ก ์ด๋ค ๊ธฐ๋ฅ์ ๊ฐ์ถ ์ดํ๋ฆฌ์ผ์ด์
์ธ์ง๋ ํ์
ํ ์ ์๋ค.
C ๋ ํ๋ฉด 1๊ฐ์ ๋ฐ์ดํฐ ๊ณต์ , D๋ ํ๋ฉด 1๊ฐ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์
๊ธฐ๋ฅ์ผ๋ก ๊ฐ๋ฐ๋์๋ค.
๊ทธ๋ผ Compnent๋ Intent์ ๋ฌด์จ ๊ด๊ณ๊ฐ ์๋ ๊ฑธ๊น?
์ปดํฌ๋ํธ๋ ์๋๋ก์ด๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ํคํ ์ฒ ์์์ด๊ณ , ๊ทธ ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํ๊ธฐ ์ํ API ์ ์ธ ํด๋์ค๊ฐ ๋ฐ๋ก ์ธํ ํธ๋ค.
์ปดํฌ๋ํธ๋ฅผ ์คํ์ํค๊ธฐ ์ํด ์์คํ ์ ๋์ฐ๋ ๋ฉ์์ง
์ธํ ํธ๋ผ๋ ํด๋์ค๋ ์ ๋ณด๊ฐ ๋ด๊ธด ํด๋์ค์ด๋ค. ํํ VOํด๋์ค๋ผ๊ณ ๋ณผ ์ ์๋ค.
์ด๋ค ์
๋ฌด๋ฅผ ์ํํ๊ธฐ ์ํ ํจ์๋ ์๊ณ ๋ช๋ช ์ ๋ณด๋ง ๋ด๊ธด๋ค.
๊ทธ๋์ ๋ง์ ์ฌ๋๋ค์ด ๋จ์ํ ์ธํ
ํธ๋ฅผ ํ๋ฉด ์ ํ API ๋ผ๊ณ ์๊ฐํ๋ค. ๋๋ ์ง๊ธ ์์๋ค
ํ์ง๋ง ์ธํ
ํธ๋ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๊ธฐ ์ํ ํต์ฌ ํด๋์ค์ด๋ค.
๋๋ฌธ์ ์์คํ
์ ์ธํ
ํธ๊ฐ ๋ฐ์ํ์ ๋ ์์คํ
์์ ํด๋น ์ธํ
ํธ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด ์ค์ผ ๋๋์ง,
์ด๋ป๊ฒ ์ฒ๋ฆฌํด ์ฃผ๋์ง์ ๋ํ ๋ด๋ถ ๋งค์ปค๋์ฆ์ ์ ํํ๊ฒ ์ดํดํ๊ณ ์์ด์ผ ํ๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก
Intent
๋ ๊ทธ๋ฅ ๋ฉ์์ง๊ฐ ๋ด๊ธด VOํด๋์ค์ด๊ณ ,
๊ทธ ๋ฉ์์ง๋ ์ปดํฌ๋ํธ๋ฅผ ์คํ ์ํค๊ธฐ ์ํ ๋ฉ์์ง์ด๋ค.
val intent = Intent(this, DetailActivity::class.java)
startActivity(intent)
public void startActivity (Intent intent)
์ธํ ํธ์ context ์ ํ๋ฉด ์ ํํ ์กํฐ๋นํฐ์ ์ ๋ณด๋ฅผ ๋ด๋๋ค.
๊ทธ๋ฆฌ๊ณ startActivity
๋ก ๋ฉ์์ง๋ฅผ ์์คํ
์ ๋์ด๋ค.
Intent ๋ก ์ปดํฌ๋ํธ๋ฅผ ์คํ์ํค๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ
๋ค๋ฅธ ์กํฐ๋นํฐ๋ฅผ ์คํํ ๋ ๋ฐ์ดํฐ๋ ๊ฐ์ด ์ ๋คํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น?
์๋ฅผ ๋ค์ด, MainActivity์ EditText์ ์ด๋ฆ์ ์ ๊ณ ์ด๋ฅผ DetailActivity์ TextView์ ์ ๋ฌํ๊ณ ์ถ๋ค๋ฉด?
-> Intent ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ธํ ํธ๋ ์ธ๋ถ ์ฑ์ ํน์ ์ปดํฌ๋ํธ๋ ์คํ์ํค๋ค. ์ฆ, Intent๋ ์ธํ ํธ๋ฅผ ๋ฐ์์ํจ ์ปดํฌ๋ํธ์ ์ธํ ํธ์ ์ํด ์คํ๋๋ ์ปดํฌ๋ํธ๊ฐ ๊ณตํต์ผ๋ก ์ด์ฉํ ์ ์๋ ๊ฐ์ฒด๋ค.
intent.putExtra("id", i)
intent.putExtra("title", datas[i]
val intent = intent
์์ ์ ์คํ์ํจ ์ธํ ํธ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฝ์์์ผ ํ๋ค.
์ด๋ฅผ ์กํฐ๋นํฐ์์ intent๋ ํ๋กํผํฐ๋ก ์ ๊ณตํ๋ค. ๊ทธ๋์ ๊ทธ๋ฅ ๊ฐ๋ค ์ฐ๋ฉด ๋๋ค.
getIntExtra (String name, int defaultValue)
getStringExtra (String name)
getDoubleExtra (String name, double defaultValue)
๊ทธ๋ฆฌ๊ณ ์๋ง๋ Extra Data ํ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฃผ๋ฉด ๋๋ค.
defaultValue
๋ ํค๊ฐ์ด ์ ๋์ด์์ ๋๋ฅผ ์๋ฏธํ๋ค.
Intent ๋ก ์กํฐ๋นํฐ๋ฅผ ์คํ์ํค๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋๋๋ ค ๋ฐ๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๊ฐ ์๋ค.
startActivityForResult()
ํจ์์ ActivityResultLauncher
๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
startActivityForResult()
๋ ์๋๋ก์ด๋ 11 ๋ฒ์ ์์ deprecated ๋์๋ค.
๊ทธ๋ฆฌ๊ณ ActivityResultLauncher
๋ผ๋ ๋ฐฉ๋ฒ์ด ์๋กญ๊ฒ ์ ์ ๋์๋ค.
์๋๋ก์ด๋ 11 ๋ฒ์ ๊ณต๊ฐ ์ผ์๊ฐ 2020๋ 9์ 8์ผ์ด๋ค. ์ฆ, ๋ ๊ฐ์ง ๋ฐฉ๋ฒ ๋ชจ๋ ์์์ผ ํ๋ค๋ ๋ป์ด๋ค.
๋ ๋ค ์ฌํ์ฒ๋ฆฌ๊ฐ ๋ชฉ์ ์ด๋ผ๋ ๊ฒ์ ๋ณํจ์๋ค.
val intent = Intent(this, DetailActivity::class.java)
startActivityForResult(intent, 10)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 10 && resultCode == RESULT_OK) {
//...........
}
}
์ฌํ์ฒ๋ฆฌ๋ฅผ ์ํด startActivityForResult()
ํจ์๋ก ์ธํ
ํธ๋ฅผ ๋ฐ์์ํจ๋ค.
onActivityResult()
ํจ์๋ฅผ ์ค๋ฒ๋ผ์ด๋ ๋ฐ์ ๋์ผ๋ฉด,
startActivityForResult()
๋ฅผ ์์ฑํ ์กํฐ๋นํฐ๊ฐ ๋ค์ ํ๋ฉด์ ๋ฐ ๋ ์๋ ์ฝ ๋๋ค.
startActivityForResult ๋ฅผ ํ ๋ฒ๋ง ์ฐ๋ผ๋ ๋ฒ์ ์๋ค.
๋ค์์ ๋ค๋ฅธ ์กํฐ๋นํฐ์์ ๊ฒฐ๊ณผ๊ฐ์ ๋๋๋ ค ๋ฐ์์ผ ํ๋ ์ํฉ์ด๋ผ๋ฉด, ์ด๋ฅผ ์ด๋ป๊ฒ ๊ตฌ๋ถํ ์ ์์๊น?
-> startActivityForResult์ ๋ ๋ฒ์งธ ์ธ์์ธ ๊ฐ๋ฐ์ ์ซ์ ๊ฐ, requestCode
๋ก ๊ตฌ๋ถํ๋ค.
ํ๋ฉด์ด ๋๋์์ค๋ฉด onActivityResult ํจ์๊ฐ ์๋ ์ฝ ๋๋ค. ์ด ๋, requestCode๊ฐ ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ธํ
ํธ์ ์ํด ์คํ๋ ์กํฐ๋นํฐ๊ฐ ๊ฒฐ๊ณผ๊ฐ์ ๋๋๋ฆฌ๊ธฐ ์ ์ ์ํ ์ฝ๋๊ฐ, resultCode
๋ฅผ ๋ ๋ฒ์งธ ์ธ์๋ก ๋ฐ๋๋ค. ๋ณดํต OK, CANCEL ์ ๋ง์ด ์ค๋ค.
์กํฐ๋นํฐ๋ฅผ ์คํ์ํค๊ณ ์คํ ๊ฒฐ๊ณผ๋ฅผ ํ๋
ํผ๋ฏธ์ ์กฐ์ ๊ฒฐ๊ณผ ํ๋
val requestActivity: ActivityResultLauncher<Intent> =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
//...............
}
requestActivity
๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๊ธฐ ์ํ ๋ถ๋ถ
์ฝ๋ ๋ธ๋ญ ์์ ๋๋์์จ ๊ฒฐ๊ณผ๊ฐ์ ์ฒ๋ฆฌํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋๋ค.
val intent: Intent = Intent(this, DetailActivity::class.java)
requestActivity.launch(intent)
ActivityResultLauncher
๊ฐ์ฒด์ launcher
ํจ์๋ก ์ธํ
ํธ๋ฅผ ๋ฐ์์ํจ๋ค.๋๊ฐ์ด putExtra ๋ก ์ฒ๋ฆฌํ๋ฉด ๋๋ค.
intent.putExtra("result", "hello $id")
setResult(RESULT_OK, intent)
finish()
Intent ์ Extra Data ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด์ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ ์ ๋ฌ
setResult()
๋ก ์ํ ๋ฑ๋ก, ์์ฒญ ์ฒ๋ฆฌ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ค. ( OK or CANCEL )
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/tv_result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30dp"
android:textStyle="bold" />
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="startActivity" />
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ActivityResultLauncher" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:context=".DetailActivity">
<Button
android:id="@+id/btn_finish"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="finish" />
</LinearLayout>
package com.kotdev99.android.c42
class MainActivity : AppCompatActivity() {
private lateinit var resultView: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val btn1 = findViewById<Button>(R.id.btn1)
val btn2 = findViewById<Button>(R.id.btn2)
resultView = findViewById(R.id.tv_result)
btn1.setOnClickListener {
val intent = Intent(this, DetailActivity::class.java)
intent.putExtra("id", "first")
startActivityForResult(intent, 10)
}
val resultLauncher: ActivityResultLauncher<Intent> = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) {
resultView.text = "result: ${it.data?.getStringExtra("result")}"
}
btn2.setOnClickListener {
val intent = Intent(this, DetailActivity::class.java)
intent.putExtra("id", "second")
resultLauncher.launch(intent)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 10 && resultCode == RESULT_OK) {
val result: String? = data?.getStringExtra("result")
resultView.text = "result : $result"
}
}
}
package com.kotdev99.android.c42
class DetailActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_detail)
val id = intent.getStringExtra("id")
val btn = findViewById<Button>(R.id.btn_finish)
btn.setOnClickListener {
intent.putExtra("result", "hello : $id")
setResult(RESULT_OK, intent)
finish()
}
}
}
์ธํ ํธ๋ ๋ ๊ฐ์ง๋ก ๋๋๋ค.
๋ช ์์ ์ธํ ํธ(Explicit Intent) : class type reference ์ ๋ณด๋ฅผ ํ์ฉํ ์ธํ ํธ
์์์ ์ธํ ํธ(Implicit Intent) : ์ธํ ํธ ํํฐ ์ ๋ณด๋ฅผ ํ์ฉํ ์ธํ ํธ
ํ๋์ ์ฑ ์์์ ์กํฐ๋นํฐ ๊ฐ์ ์ธํ ํธ๋ ๋ช ์์ ์ธํ ํธ๋ก ์ถฉ๋ถํ๋ค.๊ทธ๋ผ ์ธ๋ถ ์ฑ์ ์ปดํฌ๋ํธ์ ์ ๊ทผ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น? ์ด ๋ ์์์ ์ธํ ํธ๋ฅผ ์ฌ์ฉํ๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๋ค. Manifest ํ์ผ์ Intent Filter
๋ฅผ ๊ฑธ์ด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
<activity android:name=".MainActivity"
<intent-filter>
<action android:name="ACTION_EDIT" />
</intent-filter>
</activity>
๋ฌธ์์ด
๋ง ์์ฑ ๊ฐ๋ฅํ๋ค. ๋๋ฌธ์ ๋งค์ฐ ์ฝ๊ฒ ์ธ๋ถ์ ์ปดํฌ๋ํธ๋ฅผ ์ง์ ํ ์ ์๋ค.<intent-filter>
<action android:name="ACTION_DETAIL" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
</intent-filter>
<action>
: ์ปดํฌ๋ํธ์ ๋ฅ๋ ฅ์ ํํํ๋ ๋ฌธ์์ด
<category>
: ์ปดํฌ๋ํธ๊ฐ ์ด๋ ๋ฒ์ฃผ์ ํฌํจ๋์ด์ผ ํ๋์ง์ ๋ฌธ์์ด
<data>
: ์ปดํฌ๋ํธ์์ ํ์ํ ๋ฐ์ดํฐ์ ์ ๋ณด
ํํฐ๋ ์ ๋ณด๋ ์ ํ ์ฌํญ์ด๋ค. 3๊ฐ ๋ค ์์ฑํด๋ ๋๊ณ 1๊ฐ๋ง ์์ฑํด๋ ๋๋ค.
val intent = Intent()
intent.action = "ACTION_EDIT"
intent.data = Uri.parse("http://www.google.com")
startActivity(intent)
์ธํ ํธ ๊ฐ์ฒด๋ฅผ ์์ฑ
<action>
๋ฌธ์์ด์ด "ACTION_EDIT" ์ด๊ณ ,
<data>
์ scheme ์ด "http" ๋ก ๋์ด์๋ ์ปดํฌ๋ํธ๋ฅผ ์คํ
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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">
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DetailActivity"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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=".DetailActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="I am DetailActivity"
android:textSize="30dp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
package com.kotdev99.android.c43
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val btn = findViewById<Button>(R.id.btn)
btn.setOnClickListener {
val intent = Intent()
intent.action = "ACTION_DETAIL"
// category ์ ๋ณด๋ฅผ ์ฃผ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ผ๋ก DEFAULT ๊ฐ์ด ๋๋ค
intent.data = Uri.parse("http://www.google.com")
startActivity(intent)
}
}
}