Android

[안드로이드/Activity] Activity Action

gangmini 2023. 3. 31. 18:44
반응형

Activity Action

  • 안드로이드에서 제공되는 기본 애플리케이션의 Activity를 내가 만든 앱에서 사용 가능
  • 공개되어 있는 이름으로 제공되며 실행 가능
  • 다른 앱이 가지고 있는 화면을 띄우는 것! 내 앱 내부에서 API를 사용해 구현하는 것과는 다름
  • 캡스톤 프로젝트인 카메라 앱 개발시 안드로이드 내부 카메라 앱을 사용하려면 중요한 파트!!
  • 다음 예제에서는 구글 Map 에서 제공하는 지도 화면 액티비티를 사용
  • 미리 정의되어 있는 Intent.ACTION_VIEW 라는 이름으로 실행하면 동일한 이름의 앱 목록이 뜨기 때문에 선택
  • 한 번에 구글 지도를 띄우기 -> 위도와 경도 데이터를 uri 로 세팅
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityMainBinding.inflate(layoutInflater) // 뷰바인딩 객체
    val view = binding.root //뷰바인딩을 통해 레이아웃과 뷰가 결합 -> .root 를 통해 View 객체만를 뽑아내는(?)
    setContentView(view)

    binding.button.setOnClickListener {
        /*  구글map 애플리케이션의 지도 화면(액티비티) 사용 */
        // 세팅하는 데이터에 따라 어플이 자동으로 선택됨
        val uri = Uri.parse("geo:37.243243,131.861601") //위도와 경도 세팅 // skima geo 이므로 구글맵 실행
        val intent = Intent(Intent.ACTION_VIEW,uri) // 해당 이름으로 생성된 여러 앱의 액티비티 목록 나옴 -> 선택
        startActivity(intent)
    }

}

 

  • 다음 예제는 단말기 내부의 웹브라우저를 실행
  • 웹브라우저 주소를 uri 데이터로 세팅
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityMainBinding.inflate(layoutInflater) // 뷰바인딩 객체
    val view = binding.root //뷰바인딩을 통해 레이아웃과 뷰가 결합 -> .root 를 통해 View 객체만를 뽑아내는(?)
    setContentView(view)

    binding.button2.setOnClickListener {
        val uri = Uri.parse("https://www.notion.so/2023-1-ae02d4dec3924b828b5ad0d31e4a0232")

        val intent = Intent(Intent.ACTION_VIEW, uri)
        startActivity(intent)
    }

}

 

 

  • 다음 예제는 전화 걸기
  • 전화번호("tel:번호")를 uri 데이터로 세팅
  • 전화 걸기 세팅 -> Intent.ACTION_DIAL,  실제 전화 걸기 -> Intent.ACTION_CALL
  • 실제 전화를 걸려면 권한 설정 해줘야 하고, 개인정보/요금 문제가 있기 때문에 사용자에게 확인도 받아야 함
class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding
    val permission_list = arrayOf(android.Manifest.permission.CALL_PHONE)

    // Activity가 생성될 때 자동으로 호출
    // 화면 전환(가로,세로) 발생시 자동으로 호출되면서 새로운 화면 구현
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater) // 뷰바인딩 객체
        val view = binding.root //뷰바인딩을 통해 레이아웃과 뷰가 결합 -> .root 를 통해 View 객체만를 뽑아내는(?)
        setContentView(view)

        requestPermissions(permission_list, 0) //권한 확인
 
        binding.button3.setOnClickListener {
            val uri = Uri.parse("tel:01083287690")
            //val intent = Intent(Intent.ACTION_DIAL, uri) //전화걸기 직전 셋팅
            val intent = Intent(Intent.ACTION_CALL,uri)  //실제로 전화 걸기 -> 권한 등록 필요, 확인 받아야  (요금, 개인정보 문제)

            startActivity(intent)
        }
    }
  }

🤩 드디오!! Activity 공부완!!

반응형