سبد (0)

آموزش اندروید-Action اشتراک گذاری

آن چه در این درس خواهید آموخت:

  1. تعاریف منویتان را به روز کنید
  2. Intent مشترک را تنظیم نمایید

مواردی که باید مطالعه کرده باشید:

افزودن Action به اشتراک گذاری

پیاده سازی یک Action مفید و کاربرپسند در Action Bar با معرفی ActionProvider در اندرویدهای 4.0 به بالاتر (API 14 به بعد) آسان تر شده است. هنگامی که ActionProvider به آیتم منو در action bar ضمیمه می شود، هم ظاهر و هم رفتار آن آیتم را مدیریت می کند. با استفاده از ShareActionBar کافی است شما تنها یک intent مشترک فراهم می کنید و ما بقی کارها را خود ShareActionBar انجام می دهد.

توجه: ShareActionBar از شروع API 14 به بعد در دسترس می باشد.


تعاریف منویتان را به روز کنید

 ShareActionProvider در برنامه ی گالری

برای شروع کار با ShareActionProviderها، ابتدا برای آیتم مربوطه یک خصوصیت android:actionProviderClass در فایل منبع منو (menu resource) ایجاد کنید

 

با این کار مسئولیت ظاهر و کاربرد آیتم به ShareActionProvider سپرده می شود. با این وجود، می بایست به provider بگوییم که چه چیزی را می خواهید به اشتراک بگذارید.

استفاده از actionBarProvider

 
<menuxmlns:android="http://schemas.android.com/apk/res/android">
   
<item
           
android:id="@+id/menu_item_share"
           
android:showAsAction="ifRoom"
           
android:title="Share"
           
android:actionProviderClass=
               
"android.widget.ShareActionProvider"
/>
    ...
</menu>
 

تنظیم Intent مشترک

برای اینکه ShareActionProvider کار کند، می بایست برای آن یک intent مشترک فراهم نمایید. این intent مشترک می بایست مشابه همان چیزی باشد که در آموزش اندروید-ارسال به دیگر appها به همراه ACTION_SEND و قرار دادن اطلاعات بیشتر از طریق extraها مانند EXTRA_TEXT و EXTRA_STREAM توضیح داده شد. برای مقدار دهی یک Intent مشترک، ابتدا زمانی که دارید منبع منو را روی activity سوار (inflate) می کنید، آیتم منوی مربوطه را پیدا کنید سپس متد ()MenuItem.getActionProvider را فراخوانی کنید تا یک نمونه از ShareActionProvider بازیابی شود. از ()setShareIntent برای مرتبط کردن intent مشترک با آیتم action استفاده کنید.

 

 
private ShareActionProvider mShareActionProvider;
...

@Override
public boolean onCreateOptionsMenu(Menu menu){
   
// Inflate menu resource file.
    getMenuInflater
().inflate(R.menu.share_menu, menu);

   
// Locate MenuItem with ShareActionProvider
   
MenuItem item = menu.findItem(R.id.menu_item_share);

   
// Fetch and store ShareActionProvider
    mShareActionProvider
=(ShareActionProvider) item.getActionProvider();

   
// Return true to display menu
   
return true;
}

// Call to update the share intent
private void setShareIntent(Intent shareIntent){
   
if(mShareActionProvider !=null){
        mShareActionProvider
.setShareIntent(shareIntent);
   
}
}

تنها کاری که شما ممکن  است نیاز پیدا کنید که انجام دهید عبارت است از اینکه intent مشترک را هنگام ایجاد منوهایتان تنظیم کنید یا آن را تنظیم کنید و هنگامی که UI تغییر کرد به روز کنید.

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehiمجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامیپرداخت آنلاین -  بانک ملتمعرفی بیاموز در شبکه سهپرداخت آنلاین - بانک اقتصاد نوینپرداخت آنلاین - بانک سامان