در قسمت هجدهم آموزش برنامه نویسی اندروید در ادامه مبحث فرگمنت ها و کاربرد اینتنت ها اقدام به اجری برنامه های بومی دستگاه های اندروید (مثل مرورگر , map و …) کرده ایم که دربسیاری از برنامه های آینده کاربرد خواهد داشت.
یکی دیگر از قابلیت های اینتنت ها (کاربرد اینتنت ها) قابلیت فراخوانی اکتیویتی هایی است که در برنامه های بومی دستگاه شما هستند.برای مثال اگر در برنامه خود نیاز دارید تا یک صفحه وب را بارگزاری کنید میتوانید این کار را به وسیله شی Intent انجام دهید بجای اینکه خودتان یک مرورگر وب بنویسید این شی web browser بومی اندروید را در اختیار شما قرار میدهد.
برنامه زیر نحوه عملکرد را نشان میدهد.
پروژه جدیدی با نام UsingIntentsPrj ایجاد کرده و در قسمت main_activity.xml آن کدهای زیر را که شامل اضافه کردن سه button میباشد قرار میدهیم.
<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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.usingintentsprj.MainActivity" > <Button android:id="@+id/btn_makecalls" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="make calls" android:onClick="onClickMakeCalls" /> <Button android:id="@+id/btn_webbrowser" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/btn_showmap" android:layout_alignParentTop="true" android:layout_marginTop="48dp" android:text="web browser" android:onClick="onClickWebBrowser" /> </RelativeLayout>
و سپس در MainActivity.java نیز عملکرد رویدادهای کلیک button را به شکل زیر قرار میدهیم
package com.example.usingintentsprj; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.view.View; public class MainActivity extends Activity { int request_code=1; //--called when the activity is first created-- @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onClickWebBrowser(View view) { Intent i= new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("https://www.tejariapp.com")); startActivity(i); } public void onClickMakeCalls(View view) { Intent i = new Intent(android.content.Intent.ACTION_DIAL, Uri.parse("tel:+989215904839")); startActivity(i); } }
سپس میتوان نتیجه را به شکل زیر مشاهده کرد
در این مثال مشاهده کردید که میتوان از شی Intent برای استفاده از برنامه های بومی اندروید مثل نقشه و تلفن و مرورگر و … استفاده کرد.
در اندروید اینتنت ها معمولا به صورت جفت action و data به کار میروند.قسمت action توضیح میدهد که چه کاری قرار است صورت گیرد مثلا ویرایش , نمایش , محتوا و… قسمت data مشخص میکند که چه چیزهایی متاثر شده است مثلا یکی از مخاطبان در بانک اطلاعاتی مخاطب ها. Data به صورت یک شی Uri میباشد.
چند نوع action به صورت زیر است :
نمونه ای از data نیز به شکل زیر است :
در کل هردو بخش data و action عملیاتی که باید انجام گیرد را مشخص میکند.برای مثال برای نمایش لیستی از مخاطبان از دو عبارت ACTION_VIEW/content://contacts و برای برقراری تماس از دو عبارت ACTION_DIAL/tel:+65412523 و برای انتخاب یک مخاطب از لیست از دو عبارت ACTION_PICK/content://contacts بهره میبریم.
در دکمه اول یک شی Intent ایجاد شده است که دو آرگومان را به سازنده خود ارسال میکند که این دو آرگومان همان action و data هستند
public void onClickWebBrowser(View view) { Intent i= new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("https://www.tejariapp.com")); startActivity(i); }
در اینجا action به وسیله متغیر ثابت android.content.Intent.ACTION_VIEW مشخص شده. از متد ()parse کلاس Uri نیز برای تبدیل یک رشته URL به شی Uri استفاده میکنیم همچنین از این کلاس معمولا برای صدا زدن content provider برای دسترسی به چیزی که ما میخواهیم با ارجاع به آن .()Uri.parse یک شی Uri جدیدی را با فرمت رشته ای درستی ایجاد میکند.
content درواقع ارائه دهنده محتوی نرم افزار به دیگر نرم افزار ها براساس درخواست است. و برای دسترسی به اطلاعات پایگاه های داده نیز استفاده میشود.
برای دکمه دوم یک شماره را شماره گیری میکنیم. این کار را به وسیله ارسال شماره تلفن در بخش data انجام میدهیم
Intent i = new Intent(android.content.Intent.ACTION_DIAL, Uri.parse("tel:+989379840165")); startActivity(i);
در این حالت قبل از شماره گیری شماره مورد نظر ه کاربر نمایش داده میشود و تا وقتی که کاربر کلید call را نزند شماره کیری صورت نمیگیرد. اما اگر مایلید بدون دخالت کاربر تماس با شماره برقرار شود باید دستورات را به شکل زیر تغییر دهیم.
Intent i = new Intent(android.content.Intent.ACTION_CALL, Uri.parse("tel:+989379840165")); startActivity(i);
برای نمایش شماره گیری بدون درج شماره بخش data را به صورت زیر درآورید:
Intent i = new Intent(android.content.Intent.ACTION_DIAL); startActivity(i);