ANDROID SHARE CONTENT FACEBOOK TWITTER

Ingin sharing content ke facebook dan twitter di Android? Tetapi tidak mau ribet dengan urusan SDK? Malas melakukan pengaturan konfigurasi setup? Tidak perlu report mengenai masalah autentikasi user?

Di iOS kita bisa menggunakan Social Framework, sehingga urusan share content sudah dapat di handle oleh Framework tersebut. Lalu bagaimana apabila hendak share content di Android? Jangan khwatir, kita bisa menggunakan fasilitas share content menggunakan Intent. (Baca lebih lanjut mengenai intent disini)

Bagaimana caranya? Caranya sangat mudah, kita hanya mencari list aplikasi yang sudah diinstal di device yang memiliki package name yang mengandung “twitter” dan “katana”. Package name yang mengandung “katana” adalah package name untuk aplikasi facebook.

Setelah package name sudah ditemukan, kita bisa mengirimkan data ke aplikasi tersebut melalui Intent. Aplikasi tersebut yang akan memvalidasi user, token dan lain sebagainya sehingga kita tidak perlu repot memikirkan hal tersebut. Lalu bagaimana kalau tidak ada aplikasi di dalam device tersebut? Kita bisa larikan ke web dengan url share facebook atau twitter untuk masalah share content tersebut.

Berikut source code untuk share content melalui Intent untuk twitter :

public void shareTwitter(News news) {
 Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
 shareIntent.setType("text/plain");
 shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
 news.title);
 shareIntent.putExtra(android.content.Intent.EXTRA_TEXT,
 news.url);

 PackageManager pm = mContext.getPackageManager();
 List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent,
 0);
 for (final ResolveInfo app : activityList) {
 if ((app.activityInfo.name).contains("twitter")) {
 final ActivityInfo activity = app.activityInfo;
 final ComponentName name = new ComponentName(
 activity.applicationInfo.packageName, activity.name);
 shareIntent.addCategory(Intent.CATEGORY_LAUNCHER);
 shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
 | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
 shareIntent.setComponent(name);
 mContext.startActivity(shareIntent);
 return;
 }
 }

 Intent intent = new Intent(Intent.ACTION_SEND);
 String sharerUrl = "http://twitter.com/share?text=" + news.title
 + "&url=" + news.url;
 Logger.log(Log.INFO, "Share URL " + sharerUrl);
 intent = new Intent(Intent.ACTION_VIEW, Uri.parse(sharerUrl));
 startActivity(intent);
 }

Sedangkan source code untuk share content Facebook :

public void shareFb(News news) {
 Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
 shareIntent.setType("text/plain");
 shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
 news.title);
 shareIntent.putExtra(android.content.Intent.EXTRA_TITLE,
 news.title);
 shareIntent.putExtra(android.content.Intent.EXTRA_TEXT,
 news.url);
 shareIntent.putExtra("title", news.title);
 shareIntent.putExtra("message", news.url);

 PackageManager pm = mContext.getPackageManager();
 List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent,
 0);
 for (final ResolveInfo app : activityList) {
 Logger.log(Log.INFO, "Name : " + app.activityInfo.name);
 Logger.log(Log.INFO, "Package : " + app.activityInfo.packageName);
 if ((app.activityInfo.packageName).contains("katana")) {
 final ActivityInfo activity = app.activityInfo;
 final ComponentName name = new ComponentName(
 activity.applicationInfo.packageName, activity.name);
 shareIntent.addCategory(Intent.CATEGORY_LAUNCHER);
 shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
 | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
 shareIntent.setComponent(name);
 mContext.startActivity(shareIntent);
 return;
 }
 }
 try {
 Intent intent1 = new Intent();
 intent1.setClassName("com.facebook.katana",
 "com.facebook.katana.activity.composer.ImplicitShareIntentHandler");
 intent1.setAction("android.intent.action.SEND");
 intent1.setType("text/plain");
 intent1.putExtra("android.intent.extra.TEXT", news.url);
 startActivity(intent1);
 } catch (Exception e) {
 Intent intent = new Intent(Intent.ACTION_SEND);
 String sharerUrl = "https://www.facebook.com/sharer/sharer.php?u="
 + news.url;
 Logger.log(Log.INFO, "Share URL " + sharerUrl);
 intent = new Intent(Intent.ACTION_VIEW, Uri.parse(sharerUrl));
 startActivity(intent);
 }
 }

Berikut tampilan pada aplikasi hasil percobaan diatas :

Contoh Berita yang hendak di share  Share Facebook  Share Twitter

Boom, akhirnya sistem share facebook dan twitter sama seperti Social Framework..:)

Advertisements
ANDROID SHARE CONTENT FACEBOOK TWITTER

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s