Saya memiliki aplikasi Android dan mendukung pengiriman teks melalui aplikasi lain. Oleh karena itu, ia menggunakan ACTION_SEND
maksud dan EXTRA_TEXT
bidang. Pemilih memberi saya semua aplikasi yang bisa menangani maksud seperti itu. Itu adalah Twitter, Email, ... dan Facebook. Tetapi ketika saya memilih Facebook, browser akan terbuka dan membuka halaman berikut:
http://m.facebook.com/sharer.php?u=mytext
Ini menunjukkan teks saya dan tombol kirim. Tetapi ketika saya menekan tombol kirim tidak ada yang terjadi. Halaman baru saja dimuat lagi. Saya pikir mungkin hanya mungkin mengirim URL melalui Aplikasi Facebook. Mungkinkah itu?
Apakah ada yang berhasil mengirim teks melalui ACTION_SEND
aplikasi Facebook Android?
android
facebook
android-intent
android-sharing
Goddchen
sumber
sumber
Jawaban:
DIEDIT: dengan rilis baru aplikasi Facebook resmi untuk Android (14 Juli 2011) BERHASIL !!!
LAMA: Contoh di atas tidak berfungsi jika pengguna memilih aplikasi Facebook untuk berbagi, tetapi berfungsi jika pengguna memilih aplikasi Seesmic untuk memposting ke Facebook. Saya kira Seesmic memiliki implementasi API Facebook yang lebih baik daripada Facebook!
sumber
Agar Berbagi berfungsi dengan aplikasi facebook, Anda hanya perlu menyediakan setidaknya satu tautan:
Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, "Wonderful search engine http://www.google.fr/"); startActivity(Intent.createChooser(intent, "Share with"));
Ini akan menampilkan jendela berbagi yang benar tetapi ketika Anda mengklik bagikan, tidak ada yang terjadi (saya juga mencoba dengan Aplikasi Twitter resmi, itu tidak berfungsi).
Satu-satunya cara yang saya temukan untuk membuat berbagi aplikasi Facebook berfungsi adalah dengan hanya membagikan tautan tanpa teks:
Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, "http://www.google.fr/"); startActivity(Intent.createChooser(intent, "Share with"));
Ini akan menunjukkan jendela berikut dan tombol Bagikan akan berfungsi:
Rupanya itu secara otomatis mengambil gambar dan teks dari tautan untuk mengisi bagian.
Jika Anda hanya ingin membagikan teks, Anda harus menggunakan api facebook: https://github.com/facebook/facebook-android-sdk
sumber
Facebook
aplikasi akan menarik tautan dengan benar dari string sepertiWonderful search engine http://www.google.fr/
. Perhatikan bahwa saya mengatakan tarik tautan , itu masih tidak akan melakukan apa pun dengan teks. Juga,Twitter
berfungsi dengan teks dan tautan.06/2013:
sumber
Pertama, Anda perlu query Intent to handler sharing option. Kemudian gunakan nama paket untuk memfilter Intent maka kita hanya akan memiliki satu Intent yang merupakan opsi berbagi penangan!
Bagikan melalui Facebook
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); shareIntent.setType("text/plain"); shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Content to share"); PackageManager pm = v.getContext().getPackageManager(); List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0); for (final ResolveInfo app : activityList) { if ((app.activityInfo.name).contains("facebook")) { 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); v.getContext().startActivity(shareIntent); break; } }
Bonus - Bagikan melalui Twitter
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); shareIntent.setType("text/plain"); shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Content to share"); PackageManager pm = v.getContext().getPackageManager(); List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0); for (final ResolveInfo app : activityList) { if ("com.twitter.android.PostActivity".equals(app.activityInfo.name)) { 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); v.getContext().startActivity(shareIntent); break; } }
Dan jika Anda ingin mencari cara untuk berbagi melalui aplikasi berbagi lainnya, temukan di sana Tép Blog - Berbagi lebih lanjut melalui Android
sumber
Jadi saya punya solusi, tetapi Anda berasumsi bahwa Anda memiliki kendali atas halaman yang Anda bagikan ...
Jika Anda memformat EXTRA_TEXT Anda seperti ini ...
String myText = "Hey!\nThis is a neat pic!"; String extraText = "http://www.example.com/myPicPage.html?extraText=\n\n" + myText;
... lalu di aplikasi non-Facebook, teks Anda akan muncul seperti ini:
Sekarang jika Anda mengupdate situs Anda sehingga meminta dengan parameter kueri extraText mengembalikan konten extraText di meta data halaman.
<!-- Make sure to sanitize your inputs! e.g. http://xkcd.com/327/ --> <meta name="title" content="Hey! this is a neat pic!">
Kemudian ketika Facebook keluar dari url itu untuk menghasilkan dialog, itu akan membaca meta data judul dan menyematkannya ke dalam dialog share Anda.
Saya menyadari ini adalah solusi yang cukup yuck, jadi ambillah dengan sebutir garam ...
sumber
Tampaknya aplikasi Facebook menangani hal ini dengan tidak benar. Cara yang paling dapat diandalkan tampaknya menggunakan API Facebook untuk Android.
SDK ada di tautan ini: http://github.com/facebook/facebook-android-sdk
Di bawah 'penggunaan', ada ini:
Ini sepertinya cara terbaik untuk melakukannya - tampilkan dialog yang akan dikirim ke dinding. Satu-satunya masalah adalah mereka mungkin harus masuk terlebih dahulu
sumber
Check this out : By this we can check activity results also.... // Open all sharing option for user Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); sharingIntent.setType("text/plain"); sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, ShortDesc+" from "+BusinessName); sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, ShortDesc+" "+ShareURL); sharingIntent.putExtra(Intent.EXTRA_TITLE, ShortDesc+" "+ShareURL); startActivityForResult(Intent.createChooser(sharingIntent, "Share via"),1000); /** * Get the result when we share any data to another activity * */ public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch(requestCode) { case 1000: if(resultCode == RESULT_OK) Toast.makeText(getApplicationContext(), "Activity 1 returned OK", Toast.LENGTH_LONG).show(); else Toast.makeText(getApplicationContext(), "Activity 1 returned NOT OK", Toast.LENGTH_LONG).show(); break; case 1002: if(resultCode == RESULT_OK) Toast.makeText(getApplicationContext(), "Activity 2 returned OK", Toast.LENGTH_LONG).show(); break; }// end switch }// end onActivityResult
sumber
ShareDialog shareDialog = new ShareDialog(this); if(ShareDialog.canShow(ShareLinkContent.class)) { ShareLinkContent linkContent = new ShareLinkContent.Builder().setContentTitle(strTitle).setContentDescription(strDescription) .setContentUrl(Uri.parse(strNewsHtmlUrl)) .build(); shareDialog.show(linkContent); }
sumber
Tampaknya ini adalah bug di aplikasi Facebook yang dilaporkan pada bulan April 2011 dan masih belum diperbaiki oleh pengembang Facebook Android.
Satu-satunya solusi untuk saat ini adalah dengan menggunakan SDK mereka.
sumber
jika Anda ingin menampilkan teks, letakkan # di bagian memohon pada pesan yang Anda inginkan, maka akan dibagikan sebagai Hashtag
sumber