안드로이드 인텐트를 이용한 SNS공유

-- Android 2016. 6. 6. 09:33
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
SNS로 컨텐츠의 공유를 하기 위해 각 SNS의 SDK를 이용하는 방법도 있지만, 간단하게 각 SNS의 앱 인텐트를 이용하여 SNS공유를 진행할 수도 있다. 


1. 공유창

- 공유를 할 수 있는 모든 앱을 표시하는 공유창을 오픈한다.

Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, title);
intent.putExtra(Intent.EXTRA_TEXT, content);

Intent chooser = Intent.createChooser(intent, "공유");
startActivity(chooser);



2. SNS 하나만 구현

- 페이스북, 트위터를 예로 작성했지만 App Package만 알면 다른 것들도 충분히 가능하다.
- 여러 코딩을 안내하기 위해 일부러 다른 코딩스타일로 작성하였지만 사실 하나의 메소드로 구현이 가능하다.

  페이스북 : com.facebook.katana
  트위터 : com.twitter.android
  카카오톡 : com.kakao.talk
  카카오스토리 : com.kakao.story


1) Facebook

Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, title);
intent.putExtra(Intent.EXTRA_TEXT, content);

PackageManager packManager = mContext.getPackageManager();
List<ResolveInfo> resolvedInfoList = packManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);

boolean resolved = false;
for(ResolveInfo resolveInfo: resolvedInfoList) {
    if(resolveInfo.activityInfo.packageName.startsWith("com.facebook.katana")){
        intent.setClassName(
                resolveInfo.activityInfo.packageName,
                resolveInfo.activityInfo.name );
        resolved = true;
        break;
    }
}

if(resolved) {
    startActivity(intent);

} else {
    Toast.makeText(MainActivity.this, "페이스북 앱이 없습니다.", Toast.LENGTH_SHORT).show();
}


2) 트위터

Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.setPackage("com.twitter.android");
intent.putExtra(Intent.EXTRA_SUBJECT, title);
intent.putExtra(Intent.EXTRA_TEXT, content);

try {
    startActivity(intent);
} catch (Exception e) {
    Toast.makeText(MainActivity.this, "트위터 앱이 없습니다.", Toast.LENGTH_SHORT).show();
}


posted by 어린왕자악꿍