Hoon222y

Android App For Mac 제작 (10) - 안드로이드에서 카카오톡 공유하기 본문

개발 /우리 지금 만나

Android App For Mac 제작 (10) - 안드로이드에서 카카오톡 공유하기

hoon222y 2017. 12. 2. 17:10

 원하는 결과를 얻게되면 그 결과를 여러 사람에게 알려야 할 필요가 있다. 따라서 가장 대중적으로 사용되는 카카오톡 공유기능을 통하여 결과를 알리는 기능을 구현해 보도록 하겠다. 하기전에 가장 기본적으로 필요한것은 https://developers.kakao.com 에서 앱을 만들고 키를 가지고 있어야 한다는 것이다. 혹시 그 과정을 모른다면 http://hoon222y.tistory.com/270 를 참고하면 잘 설명이 되어있다. 


일단 네이티브 키, 혹은 Rest Key를 알고있다는 가정하에 진행하도록 하겠다. 

첫번째는 Project의 build.gradle 에서 해당 코드를 추가하는 것이다.

1
2
3
4
5
6
7
8
allprojects {
    repositories {
        jcenter()
        //카카오톡 공유를 위한 2줄
        mavenCentral()
        maven { url 'http://devrepo.kakao.com:8088/nexus/content/groups/public/' }
    }
}
cs

 

원래는 5,6번째 줄을 제외하고는 코드가 존재하는데 5,6번째 코드만 추가로 작성을 해주면 1단계는 완성. 해당 코드를 작성한 후에 Sysc를 해주자. 두번째 gradle.properties에 해당 코드를 작성한다.

1
KAKAO_SDK_VERSION = 1.1.7
cs


세번째는 Module의 build.gradle 의 dependency에 해당 코드를 작성한다. 

1
2
3
4
5
6
7
8
9
10
11
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:support-v4:23.1.1'
    compile files('libs/libDaumMapAndroid.jar')
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:design:23.4.0'
    
    //바로 이코드!  카카오톡 연동용 
    compile group: 'com.kakao.sdk', name: 'kakaolink', version: project.KAKAO_SDK_VERSION
}
cs


바로 10번째 줄의 코드를 작성하면 된다.  네번째value 폴더에 kakao_schema.xml dmf 을 만들고 해당 코드를 작성한다.  ㅁ자리에는 자신의 key를 넣으면 된다. 

1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="kakao_app_key">ㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁ</string>
    <string name="kakao_scheme">kakaoㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁ</string>
    <string name="kakaolink_host">kakaolink</string>
</resources>
cs


다섯번째는 manifest 에 등록을 한다. 이때 주의할 점은 아래 적도록 하겠다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        <activity
            android:name=".demos.MapViewDemoActivity"
            android:label="@string/map_view_demo_title">
 
            <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="@string/kakao_scheme"
                    android:host="@string/kakaolink_host"/>
 
            </intent-filter>
 
        </activity>
 
        <activity android:name=".demos.KakaoLinkActivity"
            android:theme="@style/Theme.AppCompat"/>
cs


주의할 점은 바로 이것이다. intent-filter 의 위치를 정확한 위치에 작성해야 한다.

이것으로 마무리를 하고 xml 과 class 를 만들면 사용이 가능하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="kakao_test"
        android:onClick="shareKakao"/>
 
</RelativeLayout>
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
public class KakaoLinkActivity extends AppCompatActivity{
 
    @Override
    protected void onCreate(Bundle savedINstanceState){
        super.onCreate(savedINstanceState);
        setContentView(R.layout.kakao_activity);
    }
 
    public void shareKakao(View v){
        try{
            final KakaoLink kakaoLink = KakaoLink.getKakaoLink(this);
            final KakaoTalkLinkMessageBuilder kakaoBuilder = kakaoLink.createKakaoTalkLinkMessageBuilder();
 
            kakaoBuilder.addText("kakao link test");
 
            String url = "http://ㅁㅁㅁㅁㅁㅁㅁㅁㅁ 원하는 이미지 url";
            kakaoBuilder.addImage(url,1080,1920);
 
            kakaoBuilder.addAppButton("앱 실행");
 
            kakaoLink.sendMessage(kakaoBuilder,this);
 
        }catch (KakaoParameterException e){
            e.printStackTrace();
        }
    }
}
 
cs


해당 포스팅은 http://blog.naver.com/PostView.nhn?blogId=kittoboy&logNo=220561012996&categoryNo=30&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=search 를 참고하여 작성되었습니다.

Comments