05- دریافت داده های ساده از دیگر برنامه ها
مترجم: مژگان پیرامن
آدرس مطلب اصلی: http://developer.android.com/training/basics/intents/index.html
همانطورکه App شما می تواند اطلاعات را به Apps دیگر ارسال کند، هم چنین می توانید آن داده را از Apps دریافت کنید.درباره چگونگی تعامل کاربران با Apps شما و چه نوع اطلاعاتی را شما می خواهید از Apps دیگر دریافت کنید، فکر می کنند. به عنوان مثال ، یک برنامه شبکه اجتماعی احتمالا علاقمند به دریافت محتوای متن باشد،مانند یک ادس وب جالب از App دیگر.
Google+ Android application هر دو متن و یک یا چند تصویر می پذیرد.با این App ،یک کاربر به اسانی می تواند شروع به ارسال عکس ها از Android Gallery app به Google+ جدید کند.
Update your Manifest
Intent filter اطلاع رسانی به سیستم که چه intents جزء App حاضر به پذیرش هست.مشابه که چگونه شما یک intent با عمل ACTION_SEND در درس ارسال داده های ساده برای برنامه های دیگر بسازید ،intent filter به منظور قادر به دریافت intents با این عمل بسازید.شما یک intent filter در manifest خود با استفاده ازعنصر<intent-filter>تعریف می کنید.برای مثال ، اگر برنامه شما بکار ببرد دریافت محتوای متن، تصویر واحد از هر نوع، یا تصاویر چندگانه از هر نوع ، manifest شما را نگاه خواهد کرد:
<activityandroid:name=".ui.MyActivity">
<intent-filter>
<actionandroid:name="android.intent.action.SEND"/>
<categoryandroid:name="android.intent.category.DEFAULT"/>
<dataandroid:mimeType="image/*"/>
</intent-filter>
<intent-filter>
<actionandroid:name="android.intent.action.SEND"/>
<categoryandroid:name="android.intent.category.DEFAULT"/>
<dataandroid:mimeType="text/plain"/>
</intent-filter>
<intent-filter>
<actionandroid:name="android.intent.action.SEND_MULTIPLE"/>
<categoryandroid:name="android.intent.category.DEFAULT"/>
<dataandroid:mimeType="image/*"/>
</intent-filter>
</activity>
هنگامی که App دیگری سعی می کند به اشتراک گذاری هر یک از این کارها با ساختن یک intent وانتقال ان به ()startActivity ، App شما به عنوان یک گزینه در انتخاب intent ذکر خواهد شد. اگر کاربر App شما رو انتخاب کند، فعالیت های مربوطه ( در مثال بالا ui.MyActivity. ) اغاز خواهد شد.پس ان بالا برای شما بمنظور رسیدگی محتوای مناسب در کد و UI (رابط کاربر) خود هست.
Handle the Incoming Content(بکاربردن محتوا ورودی)
بکاربردن محتوا تحویل داده شده توسط یک intent ، شروع میکنه به فراخوانی ()getIntent ، برای گرفتن شی intent .هنگامی که شما دارای یک شی ، شما می توانید بررسی کنید محتوای ان برای مشخص کردن چه چیزی بعدش انجام بده .بخاطر داشته باشید که این فعالیت می توانید شروع کنید از دیگر قسمت های سیستم مانند یک launcher.پس شما باید این را در نظر داشته باشید هنگامی که بررسی میکنید .intent
voidonCreate(BundlesavedInstanceState){
...
// Get intent, action and MIME type
Intentintent=getIntent();
String action =intent.getAction();
String type =intent.getType();
if(Intent.ACTION_SEND.equals(action)&& type !=null){
if("text/plain".equals(type)){
handleSendText(intent);// Handle text being sent
}elseif(type.startsWith("image/")){
handleSendImage(intent);// Handle single image being sent
}
}elseif(Intent.ACTION_SEND_MULTIPLE.equals(action)&& type !=null){
if(type.startsWith("image/")){
handleSendMultipleImages(intent);// Handle multiple images being sent
}
}else{
// Handle other intents, such as being started from the home screen
}
...
}
voidhandleSendText(Intent intent){
StringsharedText=intent.getStringExtra(Intent.EXTRA_TEXT);
if(sharedText!=null){
// Update UI to reflect text being shared
}
}
voidhandleSendImage(Intent intent){
UriimageUri=(Uri)intent.getParcelableExtra(Intent.EXTRA_STREAM);
if(imageUri!=null){
// Update UI to reflect image being shared
}
}
voidhandleSendMultipleImages(Intent intent){
ArrayList<Uri>imageUris=intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
if(imageUris!=null){
// Update UI to reflect multiple images being shared
}
}
اپدیت UI ( رابط کاربر) می تواند به سادگی تعدادی EditText، یا می توان آن را پیچیده تر مانند استفاده از یک فیلتر عکس جالب به یک تصویرباشد .براستی این مشخص میکند App شما چه چیزی بعدن اتفاق می افتد.
- ۹۳/۰۳/۰۲
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.