“Android 로봇은 Google에서 제작하여 공유한 저작물을 복제하거나 수정한 것으로 Creative Commons 3.0 저작자 표시 라이선스의 약관에 따라 사용되었습니다.”
안드로이드에는 공유하기라는 좋은 기능이 있다.
간단한 텍스트나 이미지 등을 다른 앱으로 보낼 수 있는데
이를 사용하는 방법에 대해서 알아보도록 한다.
다른 앱으로 공유를 통해서 보낼 땐 ShareSheet를 통해 보내게 된다.
아래의 사진이 공유를 보내기 위해 호출된 ShareSheet다.
이걸 본 적이 없다면 안드로이드를 한번도 쓴 적이 없다고 생각한다
ShareSheet를 Intent.ACTION_SEND
와
intent.createChooser()
를 통해 사용할 수 있다.
매우 간단하니 아래의 코드로 바로 살펴보겠다.
val intent = Intent(Intent.ACTION_SEND).apply {
type = "text/plain"
putExtra(Intent.EXTRA_TEXT, data)
}
startActivity(Intent.createChooser(intent, data)
type
에는 보낼 데이터의 유형
putExtra
에는 Intent 플래그와 보낼 데이터를 담는다.
그리고 startActivity
에서 intent.createChooser
를 호출하면 된다.
공유를 받기 위해선 AnrdroidManifest
에
인텐트 필터를 등록해야한다.
<activity android:name=".view.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- 공유 받기 위한 인텐트 필터 -->
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/*" />
</intent-filter>
</activity>
위 코드처럼 설정해주면 끝이다.
when(intent.action) {
Intent.ACTION_SEND -> {
if(intent.type == "text/plain") {
binding.edtInputLink.setText(intent.getStringExtra(Intent.EXTRA_TEXT))
}
}
}
onCreate()
에서 intent.action
을 통해
Intent.ACTION_SEND
와 intent.type
을 이용해
공유받은 데이터를 처리할 수 있다.
공유를 할 때는 주고 받는 데이터의 타입을 정의해줘야하는데
이 타입을 MIME타입이라고 한다.
공식 문서에 나와있는 유형은 아래와 같다.
text/plain
/ text/rtf
/ text/html
/ text/json
text/*
로 등록image/jpg
/ image/png
/ image/gif
image/*
로 등록video/mp4)
/ video/3gp
video/*
로 등록*/*
의 유형도 사용 가능하지만 권장하지 않는다고 한다.
개인적으로 공부했던 것을 바탕으로 작성하다보니
잘못된 정보가 있을수도 있습니다.
인지하게 되면 추후 수정하겠습니다.
피드백은 언제나 환영합니다.
읽어주셔서 감사합니다.