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

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

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

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

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

طبقه بندی موضوعی

08- دریافت کردن نتیجه از یک اکتیویتی

جمعه, ۲ خرداد ۱۳۹۳، ۱۰:۲۱ ب.ظ

مترجم: الهه اشجعی

آدرس مطلب اصلی: http://developer.android.com/training/basics/intents/result.html

نتیجه گیری از یک activity
لزومی وجود ندارد که شروع activity های دیگر یکطرفه باشد. همچنین می توانید activity دیگری را شروع و نتیجه ای را دریافت کنید. برای دریافت نتیجه به جایstartActivity() startActivityForResult(), را فراخوانی کنید.
به عنوان مثال، برنامه شما می تواند یک برنامه دوربین را شروع و عکس گرفته شده را به عنوان یک نتیجه برگرداند. یا شما ممکن است برنامه دیگران را برای کاربری برای انتخاب مخاطب شروع کنید و جزئیات مخاطب را به عنوان نتیجه دریافت خواهید کرد.
البته activity ای که پاسخ می دهد باید برای برگرداندن یک نتیجه طراحی شود. هنگامی که این را انجام می دهد، این نتیجه به عنوان یک شی مقصد دیگر ارسال می شود. activity شما آن را در پاسخ onActivityResult() دریافت می کند.
توجه : هنگام فراخوانیstartActivityForResult() از مفاهیم صریح یا ضمنی استفاده کنید.
هنگامی که یکی از activity های خود را برای دریافت نتیجه آغاز می کنید، شما باید از مقصود صریح و روشن برای اطمینان از دریافت نتیجه مورد انتظار استفاده کنید.
آغاز یک activity
هیچ چیز ویژه ای در مورد شی ای که که با شروع یک activity برای یک نتیجه استفاده می کنید، وجود ندارد، اما شما نیاز به ارسال یک آرگومان عدد صحیح اضافی را به روش startActivityForResult() دارید.
آرگومان صحیح یک "کد درخواست" است که درخواست شما را شناسایی می کند. هنگامی که شما نتیجه مورد نظر را دریافت می کنید، پاسخ کد درخواست به همان شکل که می تواند نتیجه را شناسایی و چگونگی اداره کردن آنرا تعیین کند، فراهم میکند.
به عنوان مثال، در اینجا چگونگی شروع یک activity که به کاربر اجازه انتخاب مخاطب را می دهد آمده است:


static final int PICK_CONTACT_REQUEST = 1; // The request code ... private void pickContact() {
Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));
pickContactIntent.setType(Phone.CONTENT_TYPE); // Show user only contacts w/ phone numbers
startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);
}

دریافت نتیجه
هنگامی که activity کاربر با activity های پس از آن و مقدار بازگشتی به اتمام می رسد، سیستم تابع onActivityResult() activity شما را فراخوانی می کند. این تابع شامل سه آرگومان است:
- کد درخواستی که شما به startActivityForResult() فرستاده اید .
- کد نتیجه توسط activity دوم مشخص شده است.اگر عملیات موفقیت آمیز باشد این RESULT_OK و RESULT_CANCELED اگر کاربر خارج شود یا عملیات ناموفق باشد.
- مقصودی که حامل داده های نتیجه می باشد.
به عنوان مثال، در اینجا شما می توانید نتیجه "انتخاب یک مخاطب" را ببینید:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
if (requestCode == PICK_CONTACT_REQUEST) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
// The user picked a contact.
// The Intent's data Uri identifies which contact was selected.
// Do something with the contact here (bigger example below)
}
}
}

در این مثال، نتیجه بازگردانده شده توسط اطلاعات مخاطب آندروید و یا برنامه دیگران یک مخاطب Uri که مخاطب کاربر انتخاب شده را شناسایی میکند را فراهم می کند.
به منظور موفقیت در مدیریت نتیجه، شما باید بدانید که فرمت نتیجه نهایی چه خواهد بود. انجام این کار از این طریق که بازگشت نتیجه activity حاصل یکی از activity های خود باشد. نرم افزارهای همراه با پلت فرم اندروید رابط های برنامه کاربردی خود که شما می توانید بر روی داده نتیجه خاص حساب کنید را ارائه می کند. به عنوان مثال، برنامه People (برنامه اطلاعات مخاطب در برخی از نسخه های قدیمی تر) همیشه نتیجه ای با محتوای URI که مخاطب انتخاب شده را شناسایی می کند، برمی گرداند، و برنامه دوربین یک Bitmap در "اطلاعات" اضافی(رجوع به کلاس گرفتن عکس) را برمی گرداند.
کار اضافی: اطلاعات مخاطب را بخوانید
کد بالا چگونگی نتیجه گرفتن از برنامه People که نیازی به بدست آوردن جزئیات در مورد چگونگی خواندن داده ها از نتیجه نیست، چرا که نیاز به بحث های پیشرفته تر در مورد ارائه دهندگان محتوا دارد. با این حال، اگر شما کنجکاو هستید، در اینجا برخی از کدها چگونگی ارسال کوئری برای نتیجه به منظور بدست آوردن شماره تلفن مخاطب مشخص را نشان می دهد:


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request it is that we're responding to
if (requestCode == PICK_CONTACT_REQUEST) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
// Get the URI that points to the selected contact
Uri contactUri = data.getData();
// We only need the NUMBER column, because there will be only one row in the result
String[] projection = {Phone.NUMBER};
// Perform the query on the contact to get the NUMBER column
// We don't need a selection or sort order (there's only one result for the given URI)
// CAUTION: The query() method should be called from a separate thread to avoid blocking
// your app's UI thread. (For simplicity of the sample, this code doesn't do that.)
// Consider using CursorLoader to perform the query.
Cursor cursor = getContentResolver()
.query(contactUri, projection, null, null, null);
cursor.moveToFirst();
// Retrieve the phone number from the NUMBER column
int column = cursor.getColumnIndex(Phone.NUMBER);
String number = cursor.getString(column);
// Do something with the phone number...
}
}
}

توجه: قبل از آندروید 2.3 (سطح API 9)، اجرای یک کوئری بر روی اطلاعات مخاطب ارائه دهنده (مانند چیزی که در بالا نشان داده شده) مستلزم آن بود که برنامه شما به READ_CONTACTS اعلام اجازه کند (امنیت و مجوزها مراجعه کنید).
با این حال، با شروع با آندروید 2.3، برنامه مخاطب / People مجوز موقت برای خواندن اطلاعات تماس ارائه دهنده هنگامی که آن را به شما باز می گرداند را صادر کرد. مجوز موقت فقط برای مخاطب خاص درخواست شده بکار می رود، بنابراین شما نمی توانید یک مخاطب غیر از آن که مشخص شده توسط Uri را کوئری بگیرید، مگر اینکه شما از طریق READ_CONTACTS اعلام اجازه کرده باشید.

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

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

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