به اشتراک گذاری متن، در برنامه نویسی اندروید
در این آموزش، چگونگی به اشتراک گذاری یک متن را شرح خواهیم داد. حتما تاکنون در برنامه های مختلف دیده اید که با اشاره بر روی یک دکمه (button)، گزینه های مختلفی برای به اشتراک گذاری متن (مثل ارسال با پیامک یا bluetooth) نمایش داده می شود، مثل شکل زیر :

در ادامه یک برنامه اندروید می سازیم که activity اصلی آن دارای یک دکمه (button) است که اگر بر روی آن دکمه اشاره کنیم، یک متن، برای اشتراک گذاری آماده می شود.
در برنامه eclipse ، ابتدا یک پروژه اندروید با نام Kelidestan.com_ShareText بسازید (نام package را برابر com.kelidestan.sharetext انتخاب کنید. نام activity اصلی را برابر MainActivity انتخاب کنید و فایل xml متناظر آن را هم، activity_main انتخاب کنید).
ابتدا فایل activity_main.xml را باز می کنیم :

ظاهر گرافیکی آن به صورت زیر می باشد (به طور پیش فرض دارای یک TextView است) :

و کدهای آن به صورت زیر است :
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</RelativeLayout>
ابتدا باید TextView را حذف کنیم و سپس یک دکمه (button) در فایل قرار بدهیم. برای این منظور، کدها را به صورت زیر تغییر می دهیم (نوع لایه را هم از RelativeLayout به LinearLayout تغییر می دهیم، البته این مورد اختیاری است) :
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Share Text"
android:onClick="shareData" />
</LinearLayout>
بخش مهم کد بالا، خط زیر می باشد :
اکنون ظاهر گرافیکی فایل activity_main.xml به صورت زیر است :

در این مرحله، قصد داریم که متن مورد نظرمان که قرار است به اشتراک گذاشته شود را در فایل strings.xml تعریف کنیم. فایل strings.xml را باز می کنیم :

کدهای آن، به صورت زیر می باشد :
<resources>
<string name="app_name">Kelidestan.com_ShareText</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
</resources>
ما یک رشته (string) جدید با نام my_text می سازیم و متن مورد نظرمان را در آن قرار می دهیم. بنابراین کدهای فایل strings.xml به صورت زیر در می آید :
<resources>
<string name="app_name">Kelidestan.com_ShareText</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="my_text">آموزش برنامه نویسی اندروید در سایت کلیدستان</string>
</resources>
اکنون فایل MainActivity.java را باز می کنیم :

کدهای فایل MainActivity.java به صورت زیر می باشد :
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
کدهای این فایل را به صورت زیر تغییر می دهیم :
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void shareData(View view) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
String my_string = getResources().getString(R.string.my_text);
intent.putExtra(Intent.EXTRA_TEXT, my_string);
startActivity(Intent.createChooser(intent, "Share this text via"));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
اکنون پروژه اندروید آماده است و می توانید آن را به روش دلخواه خود، تست کنید.
با اجرای برنامه اندروید، بر روی یک گوشی، صفحه زیر نمایش داده می شود :

با اشاره بر روی دکمه (button)، گزینه های زیر نمایش داده می شود :

این گزینه ها، تمامی مواردی را نشان می دهد که قابلیت اشتراک گذاری متن، در آنها وجود دارد. مثلا یکی از گزینه ها، گزینه Messaging می باشد که برای ارسال متن به صورت یک پیامک (sms) به کار می رود. با انتخاب این گزینه، صفحه ای نمایش داده می شود که در آن، متن مورد نظر ما به عنوان متن پیامک (sms) نوشته شده و تنها کافی است که کاربر شماره فرد را وارد کرده و سپس پیامک (sms) را ارسال کند :

فایل های پروژه اندروید را می توانید از لینک های زیر دریافت کنید :


خط آخر ارور میده
(R.menu.main, menu);
روی منو ارور میده


سلام ممنون از سایت خوبتون رشته من برق برق صنعتیه و از برنامهنویسی سردر نمیارم الان یه مدتیه دارم از مطالبتون استفادهمیکنم،ببخشید یه سوال داشتم،چجوری میشه برای لیست ویو قابلیت اشتراک گذاری رو ایجاد کرد،آخه من هرکاری کردن نشد،فقط بصورت تکی تونستم بسازم


سلام.
ابتدا کلید زیر در مورد ساخت ListView سفارشی (Custom ListView) را بخوانید تا با چگونگی درج عناصر دلخواه در ردیف های (item های یک ListView) آشنا شوید :
بنابراین، مشابه کلید بالا، در ردیف های ListView ، یک دکمه (Button) قرار می دهید و در روش getView در Adapter سازنده item های ListView ، آن Button را شناسایی کرده و کدهای مربوط به ((به اشتراک گذاری)) را برای آن می نویسید.
اگر متن به اشتراک گذاری برای هر item متفاوت است، سعی کنید که شماره های متناظری که برای فراخوانی متن ها از آرایه (یا هر روش دیگر) به کار می برید، بر اساس متغیر position باشد (یک نکته برای عدم به هم ریختن متن های متناظر با item ها).


سلام ممنون کارم راه افتاد موفق باشید


سلام
ممنون از مطالب خوبتون
نمی شه اشتراک گذاری خود برنامهاندروید رو هم بگید؟
یعنی Button باشه که با کلیک کردن بر روی آن بتوان خود برنامه رو به اشتراک گذاشت؟


سلام
من میخوام زمانی که روی دکمه کلیک شد یه سایت در برنامه هایی که میشه باز بشه نمایش داده بشه و کاربر انتخاب کنه
مثلا کلیک کرد مرورگرهای روی گوشی رو نمایش بده بعد کاربر انتخاب کنه کدوم


سلام برای افزایش این کلید ها و ارسال مطالب متفاوت باید چکار کرد؟


سلام.
برای نوشتن در وب سایت کلیدستان، کلید زیر را بخوانید :
آموزش های مورد نظر شما می تواند به صورت رایگان یا غیررایگان منتشر شود.


ممنون عالی بود
دارم یه برنامه مینویسم که نیاز داره عکس با کیفیت بالا را به اشتراک بگزارم در برنامه های اجتماعی.
لطفابرای عکس گرفتن با کیفیت و اشتراک گزاری مستقیم ان از برنامه خودم راهنمایی بفرمایید


چجوری میشه یک متن نمایش داده شده در یک تکست وییو که متن دارای فونت است را کپی کنیم
به طوری که هر جا متن را پیست کردیم متن با فونت باشد
اگه ممکنه جواب را به ایمیلم بفرستید
با تشکر از سایت خوبتون