اشتراک گذاری اطلاعات با استفاده از ActionProvider در اندروید

دوشنبه 12 بهمن 1394

در این مقاله قصد داریم در مورد اشتراک گذاری مطالب صحبت نماییم، شاید برای شما هم پیش آمده باشد که بخواهید در application های خود یک سری داده را با استفاده از application هایی که دارید برای دیگران به اشتراک بگذارید در این مقاله در مورد این موضوع صحبت خواهیم کرد.

اشتراک گذاری اطلاعات با استفاده از ActionProvider در اندروید

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

ابتدا باید یک منو ایجاد نمایید برای ایجاد منو داخل پوشه ی res باید یک پوشه به نام menu ایجاد نمایید و داخل آن از یک فایل xml استفاده کنید داخل فایل xml قطعه کد زیر را قرار دهید:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/menu_item_share"
          android:showAsAction="ifRoom"
          android:title="اشتراک"
          android:actionProviderClass="android.widget.ShareActionProvider" />
</menu>

حالا داخل پوشه ی res خود باید activity مورد نظر را قرار دهید:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                tools:context=".MainActivity" >
    <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_marginTop="178dp"
            android:text="مرجع تخصصی برنامه نویسان"
            android:textAppearance="?android:attr/textAppearanceLarge" android:gravity="center"/>
</RelativeLayout>

برای ایجاد منو باید از android.widget.shareactionprovider استفاده نماییم ، برای ایجاد منو  متد OnCreateOptionMenu را نیاز داریم، که از منو یک آیتمی را تعریف می نماید.

از shareactionprovider یک شی به نام mshareactionprovider می سازیم، اطلاعات را واکشی می کنیم و داخل shareactionprovider ذخیره می نماییم، و اگر مقدار بازگشتی true باشد منوها نمایش داده می شود.

حالا برای اینکه متن و یا تصویر مورد نظر را بخواهیم ارسال نماییم و به اشتراک بگذاریم باید یک intent ایجاد نماییم و نوع و مقدار مورد نظر را ارسال نماییم.

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ShareActionProvider;
public class MyActivity extends Activity {
    private ShareActionProvider mShareActionProvider;
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate menu resource file.
        getMenuInflater().inflate(R.menu.main, menu);
        // Locate MenuItem with ShareActionProvider
        MenuItem item = menu.findItem(R.id.menu_item_share);
        // Fetch and store ShareActionProvider
        mShareActionProvider = (ShareActionProvider) item.getActionProvider();
        setShareIntent(createShareIntent());
        // Return true to display menu
        return true;
    }
    // Call to update the share intent
    private void setShareIntent(Intent shareIntent) {
        if (mShareActionProvider != null) {
            mShareActionProvider.setShareIntent(shareIntent);
        }
    }
    private Intent createShareIntent() {
        Intent shareIntent = new Intent(Intent.ACTION_SEND);
        shareIntent.setType("text/plain");
        shareIntent.putExtra(Intent.EXTRA_TEXT,
                "http://www.barnamenevisan.org");
        return shareIntent;
    }

}

در نهایت خروجی به صورت زیر خواهد بود:

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

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

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید