برنامه نویسی اندروید - دانشگاه صنعتی قم

این وبلاگ کانال ارتباطی با دانشجویان درس«برنامه نویسی موبایل» دانشگاه صنعتی قم می باشد.

برنامه نویسی اندروید - دانشگاه صنعتی قم

این وبلاگ کانال ارتباطی با دانشجویان درس«برنامه نویسی موبایل» دانشگاه صنعتی قم می باشد.

محتویات این وبلاگ با هدف آموزش اندروید در دوره درسی "برنامه نویسی موبایل" در دانشگاه صنعتی قم توسط اینجانب گردآوری شده است.
تعداد زیادی از مطالب ترجمه شده در این وبلاگ توسط دانشجویان دانشگاه صنعتی قم به عنوان پروژه های این درس ترجمه شده است.
در صورتی که تصمیم به تماس با من دارید، می توانید از طریق آدرس ایمیل qut دات android در جی میل دات کام با من تماس بگیرید.
-------------------
اگر بتوانم به شما کمکی در زمینه برنامه نویسی اندروید بکنم، خوشحال خواهم شد با این حال اگر پرسشی را ارسال کردید و بنده نیز به دلیل مشکلات و مشغله نتوانستم پاسخگو باشم، پوزش بنده را پیشاپیش پذیرا باشید.
-------------------
چون افراد زیادی از من درخواست می کنند تا برنامه نویسان اندروید به خصوص در شهر قم را به آنها معرفی کنند، اگر تمایل دارید رزومه و یا مشخصات خود را برایم ارسال کنید تا در صورت وجود درخواستهایی از این دست به شما اطلاع دهم.
از نظر من محدویتی به شهر قم وجود ندارد، لذا اگر برنامه نویس اندروید در شهرهایی دیگر هستید و یا به دنبال نیروی برنامه نویس اندروید هستید با من در تماس باشید، شاید بتوانم در این زمینه به شما کمکی بکنم :)
ناگفته نماند از آنجایی که در فضای مجازی من شناختی از هیچ شخص یا شرکتی ندارم، اگر شخصی به دنبال نیروی کار باشد، به افرادی که با مشخصات درخواستی ایشان تطابق داشته باشند، اطلاع خواهم داد و توصیه می شود برنامه نویسان محترم نیز قبل از شروع به همکاری، ملاحظات لازم در این زمینه را به عمل آورند چون من نیز شناختی از طرف مقابل ندارم.

طبقه بندی موضوعی
مترجم: رضا آقازاده
آدرس اصلی مطالب:

Sharing Simple Data

اشتراک گذاری ساده ی داده

یکی از بزرگترین نکته‌ها در مورد برنامه‌های آندروید توانایی آن‌ها در برقراری ارتباط و ترکیب شدن با یکدیگر هست.

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

این کلاس با استفاده از ابزارهای واسط Intent و شی ActionProVider یک سری روش‌های متداول برای ارسال و دریافت دیتایی ساده بین برنامه‌ها را پوشش میدهد.

 

 Sending Simple Data to Other Apps

ارسال یک دیتای ساده به دیگر برنامه‌ها

 

وقتی شما قصد انجام عملی را دارید، خود باید آن را راه اندازی کنید.

آندروید تعدادی عمل شامل ACTION_SEND «که همانطور که از اسمش پیداست، انقال  از یک activity به دیگری و حتی در طول یک پراسس را تضمین میکند» را فراهم کرده است.

 

تمام کاری که شما باید برای انتقال داده بین activity ها انجام بدهید، ۲ عمل است :

۱-         مشخص کردن داده

۲-         نوع داده

سیستم خودش گیرنده ی مناسب این داده را تشخیص داده و اون رو به کاربر نشون میده.

همچنین شما میتوانید با اعمال در فایل مانیفست مشخص کنید که activity شما چه نوع داده‌ای را از دیگر برنامه‌ها دریافت میکند

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

 

** بهترین راه برای اضافه کردن یک عمل به نوار اعمال استفاده از ShareActionProvider میباشد که در API level 14 در دسترس هست.

 

ارسال محتوی متنی :

راحت ترین، سریعترین و متداول ترین روش استفاده از ACTION_SEND  ارسال محتوی متنی ساده بین یک activity و دیگری است.

به عنوان مثال مرورگر وب میتواند آدرس صفحه‌ای که در حال حاضر مشاهده میکند را با دیگر برنامه‌ها به اشتراک بگذارد. این عمل در اشتراک گذاری آدرس سایت با دوستان در سرویس های شبکه‌های اجتماعی و ایمیل کاربرد دارد. کد زیر بخشی از پیاده‌سازی این عمل است :

Intent sendIntent = new Intent();

sendIntent.setAction(Intent.ACTION_SEND);

sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");

sendIntent.setType("text/plain");

startActivity(sendIntent);

 

 

 

 

 

 

اگر یک برنامه با کد شناسایی ACTION_SEND نصب باشه، آندروید اون رو اجرا میکنه.

اگر بیش از یک برنامه با این کد وجود داشته باشه، آندروید از کاربر سئوال میپرسد که میخواهد از کدام ابزار استفاده بکند.

به هر حال اگر شما Intent.createChooser رو فراخوندید و شی intent رو به اون پاس دادید، شماره ی ورژن intent رو نشون میده و همیشه منوی انتخاب برنامه رو نشان میدهد که این چند خاصیت دارد :

 

۱-         حتی اگر کاربر به طور پیشفرض برنامه‌ای رو برای این انتخاب کرده باشه، منوی انتخاب برنامه همواره نشان داده      میشود.

۲-         اگر برنامه‌ای مناسب با این intent پیدا نشد، آندروید یک پیغام سیستمی نشان میدهد.

۳-         شما میتوانید برای این منو یک عنوان انتخاب کنید.

 

این هم از کد بروز شده :

Intent sendIntent = new Intent();

sendIntent.setAction(Intent.ACTION_SEND);

sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");

sendIntent.setType("text/plain");

startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to

 

به طور اختیاری شما میتوانید از موارد اضافی EXTRA_EMAIL ،EXTRA_CC ، EXTRA_BCC ، EXTRA_SUBJECT استفاده کنید. اگر برنامه ی دریافت‌کننده برای استفاده از این‌ها طراحی نشده باشد، این‌ها را در نظر نمیگیرد.

 

ارسال محتوی باینری :

داده ی باینری از طریق ACTION_SEND منتشر میشود. عمل به همراه تنظیماتی که نوع مناسب برای MIME

وقرار دادن URI در داده با نام اضافی EXTRA_STREAM. به طور معمول این روش برای انتشار عکس به کار می‌رود ولی به طور کل برای انتشار هر نوع داده و محتوی باینری استفاده میشود.

 

Intent shareIntent = new Intent();

shareIntent.setAction(Intent.ACTION_SEND);

shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);

shareIntent.setType("image/jpeg");

startActivity(Intent.createChooser(shareIntent,getResources().getText(R.string.send_to)));

 

به موارد زیر دقت کنید :

۱-         شما میتوانید از ”*/*” به عنوان MIME استفاده کنید، اما این مدل فقط فعالیت‌هایی را که توانایی هندل کردن جریان های داده‌ای عمومی را قبول میکند.

۲-         برنامه ی دریافت‌کننده ی داده برای دسترسی به داده ی در uri نیاز به مجوز دارد. راه‌های پیشنهادی برای انجام این کار این است :

 

            الف-ذخیره ی داده در ContentProvider. از داشتن مجوز توسط برنامه‌های دیگر برای دسترسی به Provider مطمئن باشید. بهترین روش و مکانیسم برای فراهم کردن دسترسی استفاده از per-URI permissions است که به صورت موقتی میباشد و فقط مجوز دریافت را برای برنامه‌ها تأمین میکنند. راحت ترین روش برای ساخت ContentProvider به این روش ، استفاده از کلاس‌های کمک کننده ی FileProvider است.

 

            ب- استفاده از MediaStore. 

                        در اصل MediaStore در کارهای ویدئویی،صوتی، و عکس‌های انواع MIME استفاده میشود.

            به هر حال افراد تازه کار میتوانند در  Android 3.3 داده‌های غیر مدیایی هم ذخیره بکنند.

             فایل‌های میتوانند با استفاده از ScanFile به MediaStore بعد از اینکه ساختار URI به صورت //:content  و مناسب با انتشار تنظیم شد و به دوباره خوانی onScanCompleted پاس داده شد.

 

* توجه کنید که وقتی داده‌ای به MediaStore اضافه شد. داده از طریق هر برنامه‌ای قابل دسترسی هست.

           

ارسال بخش‌های داده‌ای به صورت تکه تکه:

 

برای ارسال داده‌ها به صورت تکه‌تکه از ACTION_SEND_MULTIPLE به همراه URI هایی که به داده‌ها اشاره میکند استفاده میکنیم.

نوع MIME بسته به ترکیب محتوایی که شما منتشر میکنید متغیر است.برای مثال اگر شما ۳ تا عکس JPEG منتشر کنید، نوع همچنان image/jpeg خواهد بود. برای ترکیب های پیچیده‌تری از عکس‌ها این نوع به */image تغییر خواهد کرد تا هر activity بتواند هر نوع عکسی را هندل کند. شما فقط در هنگامی که از رنج داده‌ای باز و زیادی استفاده میکنید مجاز هستید تا از */* استفاده کنید.

همانطور که قبلاً گفته شد، دریافت نوع داده‌ای بسته به برنامه ی دریافت‌کننده داده دارد تا بتواند آن را تفسیر و پردازش بکند.

این هم یک نمونه :

ArrayList<Uri> imageUris = new ArrayList<Uri>();

imageUris.add(imageUri1); // Add your image URIs here

imageUris.add(imageUri2);

Intent shareIntent = new Intent();

shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);

shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);

shareIntent.setType("image/*");

startActivity(Intent.createChooser(shareIntent, "Share images to.."));

  • وهاب صمدی بخارایی

نظرات  (۱)

salam
ostad mishe moshakhas konin kudum yeki az in maghaleha ro baraie emtehane androide in termemun bayad bekhunim??!!
mamnun
پاسخ:
سلام
به زودی زود اعلام می کنم.
با احترام

ارسال نظر

کاربران بیان میتوانند بدون نیاز به تأیید، نظرات خود را ارسال کنند.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی