SWDesk/App
앱에서 생성된 데이터를 카카오톡으로 보내는 소스 코드
inhae
2023. 3. 4. 18:15
[예제 1]
// KakaoLink API 초기화
KakaoLink kakaoLink = KakaoLink.getKakaoLink(getApplicationContext());
KakaoTalkLinkMessageBuilder messageBuilder = kakaoLink.createKakaoTalkLinkMessageBuilder();
// 메시지 생성
messageBuilder.addText("안녕하세요. 카카오톡 메시지 전송 예제입니다.");
messageBuilder.addImage("http://example.com/image.jpg", 300, 200);
// 카카오톡 메시지 전송
Intent intent = messageBuilder.getIntent();
startActivity(intent);
[예제2]
- 카카오톡 API 등록 및 설정
- 카카오 개발자 센터에서 애플리케이션 등록 후 REST API 키를 발급 받습니다.
- 카카오톡 API를 사용하기 위해서는, 먼저 애플리케이션의 AndroidManifest.xml 파일에 KakaoTalkLinkScheme 스키마를 추가해야 합니다. 아래와 같이 <intent-filter> 태그를 추가합니다.
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="kakaolink" />
</intent-filter>
2. 카카오톡 API를 사용한 메시지 전송
- 메시지를 전송하기 위해, KakaoLink 클래스를 사용합니다.
- KakaoTalkLinkMessageBuilder 클래스를 사용하여 메시지를 작성합니다.
- KakaoTalkLinkService 클래스의 getInstance() 메소드를 사용하여 KakaoLinkService 인스턴스를 가져옵니다.
- KakaoLinkService 인스턴스의 sendDefault() 메소드를 호출하여 메시지를 전송합니다.
아래는 사진과 텍스트를 카카오톡으로 전송하는 예제 코드입니다.
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import com.kakao.kakaolink.KakaoLink;
import com.kakao.kakaolink.KakaoTalkLinkMessageBuilder;
import com.kakao.kakaolink.KakaoTalkLinkService;
import java.io.ByteArrayOutputStream;
public class KakaoTalkSender {
public static void send(Context context, String message, Bitmap imageBitmap) {
try {
// 카카오톡 API 초기화
KakaoLink kakaoLink = KakaoLink.getKakaoLink(context);
KakaoTalkLinkMessageBuilder builder = kakaoLink.createKakaoTalkLinkMessageBuilder();
// 메시지 추가
builder.addText(message);
// 이미지 추가
ByteArrayOutputStream stream = new ByteArrayOutputStream();
imageBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
builder.addImage(byteArray, 300, 200);
// 카카오톡 링크 실행
kakaoLink.sendMessage(builder, context);
} catch (Exception e) {
// 카카오톡이 설치되어 있지 않은 경우, 마켓으로 이동
Uri uri = Uri.parse("market://details?id=com.kakao.talk");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
context.startActivity(intent);
}
}
}
[예제3]
카카오톡 특정 대화방에 메시지를 전송하려면, KakaoTalkLinkMessageBuilder 클래스의 addAppButton() 메소드를 사용하여 대화방을 선택할 수 있는 버튼을 추가해야 합니다. 버튼을 클릭하면 카카오톡 대화방 선택 화면이 나타납니다. 사용자가 대화방을 선택하면 해당 대화방으로 메시지가 전송됩니다.
아래는 사진과 텍스트를 카카오톡의 특정 대화방에 전송하는 안드로이드 앱의 예제 코드입니다.
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.kakao.kakaolink.KakaoLink;
import com.kakao.kakaolink.KakaoTalkLinkMessageBuilder;
import com.kakao.kakaolink.KakaoTalkLinkService;
import java.io.ByteArrayOutputStream;
public class MainActivity extends AppCompatActivity {
// 카카오톡 링크 요청 코드
private static final int REQUEST_CODE_KAKAO_TALK = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 카카오톡으로 전송할 메시지 작성
String message = "안녕하세요. 카카오톡으로 메시지를 전송합니다.";
// 전송할 이미지
Bitmap imageBitmap = ...
// 카카오톡 API 초기화
KakaoLink kakaoLink = KakaoLink.getKakaoLink(this);
KakaoTalkLinkMessageBuilder builder = kakaoLink.createKakaoTalkLinkMessageBuilder();
// 메시지 추가
builder.addText(message);
// 이미지 추가
ByteArrayOutputStream stream = new ByteArrayOutputStream();
imageBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
builder.addImage(byteArray, 300, 200);
// 대화방 선택 버튼 추가
builder.addAppButton("카카오톡으로 전송", new Intent(Intent.ACTION_VIEW, Uri.parse("kakaotalk://pickchat")));
// 카카오톡 링크 실행
kakaoLink.sendMessage(builder, this);
// 카카오톡 대화방 선택 화면이 나타납니다.
// 사용자가 대화방을 선택하면 해당 대화방으로 메시지가 전송됩니다.
}
}
위의 코드에서 builder.addAppButton() 메소드를 사용하여 대화방 선택 버튼을 추가하고, Intent.ACTION_VIEW 액션과 kakaotalk://pickchat URI를 사용하여 카카오톡 대화방 선택 화면을 실행합니다.
메시지를 전송하는 경우 kakaoLink.sendMessage(builder, this); 메소드를 사용하며, 이 경우 onActivityResult() 콜백을 통해 결과를 받을 필요가 없습니다. 대신, 카카
반응형