آموزش برنامه نویسی اندروید (Android)
۴۱۹ آموزش
نمایش دسته بندی ها (۴۱۹ آموزش)

افزودن امکان دریافت یک آدرس اینترنتی (آدرس URL) به اشتراک گذاری شده از برنامه های اندروید دیگر، به برنامه اندروید خود (با قابلیت نمایش برنامه، تنها برای یک دامنه خاص) و سپس پردازش بر روی URL ، در برنامه نویسی اندروید

قبلا در مبحثی دیگر شرح دادیم که چگونه می توان امکان دریافت محتواهایی مثل متن، عکس و ... که توسط سایر برنامه های اندروید به اشتراک گذاشته می شود را به برنامه اندروید خود اضافه کنیم (با استفاده از intent-filter). در همان زمان گفتیم که با آن کدها، یک آدرس URL را تنها می توانیم به صورت متن دریافت نماییم. اما در این مبحث قصد داریم که این بار، امکانات دیگری را در مورد دریافت یک آدرس URL از دیگر برنامه ها شرح بدهیم.

زمانی که کاربر بر روی یک آدرس URL (آدرس اینترنتی - لینک) کلیک نماید، پنجره ای با عنوان complete action using باز می شود که شامل لیستی از برنامه هایی است که آدرس URL دریافت می کنند و ما می خواهیم برنامه اندروید ما نیز در آن لیست نمایش داده شود. حتی تعیین خواهیم کرد که تنها برای یک دامنه خاص (مثلا www.kelidestan.com)، برنامه اندروید ما در لیست نمایش داده شود. این مورد مهم است، زیرا تعدادی از برنامه های اندروید، تنها برای دریافت URL از سایت مربوط به سازنده برنامه طراحی می شوند (نه دامنه مربوط به دیگر سایت ها).

برای این مورد نیز باید از intent-filter استفاده کنیم. باید کد زیر را به کدهای فایل AndroidManifest.xml پروژه اندروید اضافه کنیم :


<intent-filter>
    <action android:name="android.intent.action.VIEW"></action>
    <category android:name="android.intent.category.DEFAULT"></category>
    <category android:name="android.intent.category.BROWSABLE"></category>
    <data android:scheme="http" android:host="www.kelidestan.com" ></data>
</intent-filter>

همان طور که مشاهده می کنید، تعیین کرده ایم که تنها برای URL های مربوط به دامنه www.kelidestan.com ، برنامه اندروید ما، در لیست نمایش داده شود.

این کد باید در میان تگ های آن activity قرار بگیرد که قرار است آدرس URL را دریافت کرده و عملیات های بعدی را بر اساس آن انجام بدهد.

اگر این کد درون تگ activity اصلی برنامه اندروید نوشته شود، آنگاه نام برنامه اندروید در لیست برنامه ها و در زیر آیکون برنامه (در لیست به اشتراک گذاری) نمایش داده می شود، اما اگر درون تگ یک activity غیر از activity اصلی بنویسیم، آنگاه عنوان (title) آن activity که معمولا در action bar نمایش داده می شود، در لیست برنامه ها نوشته خواهد شد. اگر بخواهیم که در هر صورت، یک عبارت واحد در زیر نام برنامه (درون لیست برنامه های به اشتراک گذاری) نمایش داده شود، باید عبارت مورد نظرمان را با مشخصه label به کدهای بالا اضافه کنیم. یعنی خط اول کدها را به صورت زیر تغییر می دهیم :


<intent-filter android:label="Share with my app">

این تغییر، باعث می شود که وقتی برنامه اندروید ما در لیست به اشتراک گذاری نمایش داده می شود، عبارت Share with my app در زیر آیکون آن نوشته شود (شما می توانید این عبارت را به عبارت مورد نظر خود تغییر بدهید).

بنابراین، در کل، شیوه درج کدها درون کدهای activity ، مشابه کدهای زیر می باشد :


<activity
    android:name="com.package.name.ActivityName"
    android:label="@string/title_activity" >
    <intent-filter android:label="kelidestan">
        <action android:name="android.intent.action.VIEW"></action>
        <category android:name="android.intent.category.DEFAULT"></category>
        <category android:name="android.intent.category.BROWSABLE"></category>
        <data android:scheme="http" android:host="www.kelidestan.com" ></data>
    </intent-filter>
</activity>

دریافت URL توسط activity و سپس پردازش بر روی آن :

با کدهایی که شرح دادیم، تنها امکان دریافت URL توسط یکی از activity های برنامه اندروید به وجود می آید، اما باید درون آن activity نیز کدهایی را بنویسیم تا URL را دریافت کرده و سپس برای پردازش های بعدی، آن را در اختیار داشته باشد. اگر تنها کدهای قبلی که شرح دادیم به برنامه افزوده شود، تنها activity مورد نظر باز می شود و عملا واکنشی در مورد مقدار URL ، از خود نشان نخواهد داد (مثلا همان محتویات گرافیکی خود را نمایش می دهد).

برای دریافت URL و ذخیره آن در یک رشته (string)، کدهای زیر را در activity می نویسیم :


String URL_string = getIntent().getDataString();

بنابراین آدرس URL را در یک رشته (string) با نام URL_string ذخیره کرده ایم و اکنون می توانیم پردازش های لازم را بر روی آن انجام بدهیم.

مثلا فرض کنید که در activity ، یک TextView با id برابر textView1 داریم و می خواهیم که آدرس URL توسط activity دریافت شده و سپس در TextView نمایش داده شود، برای این منظور، کدهای زیر را می نویسیم :


String URL_string = getIntent().getDataString();
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setText(URL_string);
نکته

اگر قصد تست این روش را دارید و می خواهید بر روی یک لینک، آن را تست کنید، می توانید از برنامه اندروید QR Droid استفاده کنید، آن را بر روی گوشی اندروید خود نصب کرده و سپس با آن از یک کد QR که متناسب با یک آدرس URL است، عکس بگیرید تا نتیجه را به صورت یک لینک به شما نمایش بدهد. سپس با کلیک بر روی لینک، لیست برنامه ها نمایش داده می شود که برنامه شما هم باید در بین آنها باشد (این مورد را به این دلیل مثال زدم که معمولا کاربرد اصلی برای این آموزش می باشد و معمولا توسعه دهندگان، کدهای QR را به صورت عکس در سایت قرار می دهند تا کاربر از آنها عکس گرفته و سپس توسط نرم افزارهایی مثل QR Droid ، تبدیل به لینک شده و سپس توسط نرم افزار اصلی توسعه دهنده، پردازش شود).

نویسنده علیرضا گلمکانی
شماره کلید 298
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 1 1 0
علیرضا ارشدی
۱۳۹۶/۰۹/۲۷
۲۲:۳۰

خیلی عالی بود

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)