간단한 삽질 기록

나고수·2022년 5월 6일
0

1일1공부

목록 보기
36/68

이모지 xml 에서 사용하고 싶을 때

HTML Entity (decimal) 이용하면 바로 xml 에서 이모지 작성 가능

카카오지도 두개 이상 맵 첨부 하고 싶을때

//onResume에서 addView 하고, onStop에서 removeView를 해줘야
//다른 페이지에서 카카오지도를 사용할때
//카카오지도는 한번에 두개이상 사용할 수 없다는 에러가 안뜹니다.
override fun onStop() {
    super.onStop()
    binding.mapViewContainer.removeView(mapView)
}

네비게이션 startDestination 다르게 하고 싶을때

//ex)진입 액티비티는 하나인데, 로그인을 한 상태라면 mainFragment로 
//로그인을 하지 않은 상태라면 loginFragment로 
//startDestination을 다르게 설정하고 싶을 때.
navController.apply {
    setGraph(R.navigation.nav_graph) //startDestination을 바꾸길 원하는 graph
}.navigate(R.id.signInFragment) //첫화면으로 보여주고 싶은 fragment

이메일 intent 수신 주소 지정할때

 private fun sendEmailToAdmin() {
        val intent = Intent(Intent.ACTION_SENDTO)
        intent.apply {
            data = Uri.parse("mailto:") // only email apps should handle this. no message, sns app
            putExtra(Intent.EXTRA_SUBJECT, "건의하기")
            putExtra(Intent.EXTRA_EMAIL, arrayOf("exmaple@google.com")) 👈 수신주소 지정 : array 형식으로 지정해줘야함.
            putExtra(
                Intent.EXTRA_TEXT,
                "App Version : ${BuildConfig.VERSION_NAME}\nDevice : ${Build.MODEL}\nAndroid(SDK) : ${Build.VERSION.SDK_INT}(${Build.VERSION.RELEASE})\n내용 : ",
            )
        }
        if (intent.resolveActivity(requireContext().packageManager) != null) {
            startActivity(intent)
        }
    }

resolveActivity 란?

  • 암시적 intent를 실행 할 수 있는 앱이 기기에 있는지 체크하기 위하여!
  • 암시적 인텐트를 받을 수 있는 앱이 기기에 없을 경우, 여러분의 앱이 startActivity()를 호출하면 앱의 작동이 중단됩니다. 인텐트를 수신할 앱이 있는지 먼저 확인하려면, Intent 객체에서 resolveActivity()를 호출합니다. 결과가 null이 아닌 경우, 인텐트를 처리할 수 있는 앱이 최소한 하나는 있다는 뜻이며 startActivity()를 호출해도 안전합니다. 결과가 null이면 해당 인텐트를 사용해서는 안 되고, 가능하면 해당 인텐트를 호출하는 기능을 비활성화해야 합니다.
  • resolveActivity 로 return 된 앱이 두개 이상이라면, 사용자에게 선택하게한다.
  • 자세한내용참고

안드로이드 11 이상에서 이메일 보낼 수 있는 앱 찾기 - 패키지 공개 상태 관리 변경 관련

//이메일 보낼 수 있는 앱을 찾고 싶다면 manifest.xml 에 다음 queries 추가 
 <queries>
    <intent>
        <action android:name="android.intent.action.SENDTO"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:scheme="mailto"/>
    </intent>
</queries>
profile
되고싶다

0개의 댓글