2022년

Activity Action

박상윤 2021. 10. 21. 20:17

- 안드로이드에서 제공되는 기본 애플리케이션 중 다른 애플리케이션이 사용할 수 있도록 제공되는 Activity들이 있다.

- 이들은 모두 공개되어 있는 이름이 제공되며 이를 통해 실행할 수 있다.

 

 

package com.sypark.activityaction

import android.content.Intent
import android.net.Uri
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

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

        button.setOnClickListener{
            var uri = Uri.parse("geo:37.243243,131.861601")
            val intent = Intent(Intent.ACTION_VIEW,uri)
            startActivity(intent)
        }
    }
}

ACTION_VIEW -> "무언가를 보여준다" 라는 의미를 가진다.

구글지도 실행하기 버튼 클릭후

 

package com.sypark.activityaction

import android.content.Intent
import android.net.Uri
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

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

        button.setOnClickListener{
            val uri = Uri.parse("geo:37.243243,131.861601")
            val intent = Intent(Intent.ACTION_VIEW,uri)
            startActivity(intent)
        }

        button2.setOnClickListener {
            val uri = Uri.parse("https://developer.android.com")
            val intent = Intent(Intent.ACTION_VIEW,uri)
            startActivity(intent)
        }

        button3.setOnClickListener {
            val uri = Uri.parse("tel:12341234")
            val intent = Intent(Intent.ACTION_DIAL,uri)
            startActivity(intent)
        }

        button4.setOnClickListener{
            val uri = Uri.parse("tel:12341234")
            val intent = Intent(Intent.ACTION_CALL,uri)
            startActivity(intent)
        }
    }
}

구글지도 말고도 다른 기능을 추가

 

package com.sypark.activityaction

import android.content.Intent
import android.net.Uri
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

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

        button.setOnClickListener{
            val uri = Uri.parse("geo:37.243243,131.861601")
            val intent = Intent(Intent.ACTION_VIEW,uri)
            startActivity(intent)
        }

        button2.setOnClickListener {
            val uri = Uri.parse("https://developer.android.com")
            val intent = Intent(Intent.ACTION_VIEW,uri)
            startActivity(intent)
        }

        button3.setOnClickListener {
            val uri = Uri.parse("tel:12341234")
            val intent = Intent(Intent.ACTION_DIAL,uri)
            startActivity(intent)
        }

        button4.setOnClickListener{
            val uri = Uri.parse("tel:12341234")
            val intent = Intent(Intent.ACTION_CALL,uri)
            startActivity(intent)
        }
    }
}

 

 

주의할점

자동으로 전화를 거는 기능은 반드시 권한이 필요하다

 

권한을 부여

 <uses-permission android:name="android.permission.CALL_PHONE"/>

권한 확인

val permission_list = arrayOf(
        Manifest.permission.CALL_PHONE
    )

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        requestPermissions(permission_list,0)
   }

 

전화가 실제로 걸린다.

 

 

정리

- 안드로이드에 내장되어 있는 애플리케이션들은 다른 애플리케이션이 사용할 수 있도록 Activity가 제공된다.