در این مقاله به نحوه اجرا و مدیریت اینتنت ها میپردازیم.
پرچم ها Flags:
پرچم ها بخش اختیاری از شیئ Intent بوده و نحوه اتصال سیستم اکتویتی را نشان داده و نحوه رفتار آن را بعد از اتصال میتوانند گزارش دهند
شماره
|
پرچم و توضیحات
|
1
|
FLAG_ACTIVITY_CLEAR_TASK
اگر شما یک Intent در Context.startActivity() ایجاد کنید. این پرچم بر تمام دستورات موجود که با اکتیویتی در ارتباط بوده و قبل از شروع آن فراخوانی میشوند، تاثیر خواهد گذاشت. با اینکار activity شما ریشه ای تهی از یک دستور خالی خواهد بود. و تمام اکتیویتی های قبلی نیز به پایان میرسند این پرچم تنها میتواند همراه با FLAG_ACTIVITY_NEW_TASK بکار رود
|
2
|
FLAG_ACTIVITY_CLEAR_TOP
اگر این پرچم ایجاد شود و activity متصل به آن در حال حاضر در دستور فعلی در حال اجرا باشد. اینکار بجای اتصال به یک اکتیویتی جدید ، تمام فعالیت ها یا اکتیویتی های دستور فعلی را منقضی خواهد کرد. این شیئ Intent به اکتویتی قدیمی به عنوان یک شیئ Intent جدید مراجعه میکند
|
3
|
FLAG_ACTIVITY_NEW_TASK
این پرچم بصورت کلی با اکتیویتی که میخواهد یک استایل launcher را فراخوانی کند استفاده میشود. اکتیوتی های فراخوانی کننده لانچر ها به کاربر لیستی از امکانات استایل دهی را میدهند، که بصورت کلی بصورت مستقل از اکتیویتی که آنها را فراخوانده عمل می کنند.
|
نام کامپوننت
این فیلد انتخابی یک شیئ اندرویدی ComponentName است که کلاس Activity ، Service یا BroadcastReceiver را فراخوانی می کند. اگر این فیلد پر شد باشد. شئی Intent یک، کلاس دیزاین شده را بصورت نمونه ارجاع خواهد داد . اگر هم این فیلد پر نشده باشد. اندروید از سایر اطلاعات موجود در شیئ Intent برای یافتن موقعیت مناسب هدف استفاده می کند.
نام کامپوننت با متد های setComponent(), setClass() و یا setClassName() درج شده و با متد getComponent() آماده میگردند.
انواع شیئ Intents
در تصویر زیر دو نوع شیئ intents که توسط اندروید پشتیبانی می شوند را مشاهده میکنیم
Explicit Intents:
Explicit Intents برای اتصال میان دنیای داخلی نرم افزار ها هستند ، اگر شما بخواهید درون یک نرم افزار یک activity را به activity دیگر متصل کنید از Explicit Intents استفاده می کنید . به تصویر زیر نگاه کنید تصویر نشاندهنده انتقال از اولین activity به دومین activity است که با کلیک روی دکمه ای اتفاق می افتد:
این اینتنت ها کامپوننت ها هدف را تعیین می کنند و این کامپوننت ها را با نام آن فراخوانی می کنند.این ویژگی برای پیام های داخلی نرم افزار بکار میرود. مانند یک activity که یک سرویس تابع خودش را اجرا می کند و یا یک اکتیویتی که به اکتیوتی هم سطح خود متصل میشود. برای مثال :
// Explicit Intent by specifying its class name
Intent i = new Intent(FirstActivity.this, SecondActivity.class);
// Starts TargetActivity
startActivity(i);
Implicit Intents :
Implicit Intents از نام مقصد خود استفاده نمی کند و فیلد نام کامپوننت در این اشیاء خالی است . Implicit intents معمولا برای کامپوننت های اکتویتی در سایر نرم افزار ها بکار می روند. برای مثال :
Intent read1=new Intent();
read1.setAction(android.content.Intent.ACTION_VIEW);
read1.setData(ContactsContract.Contacts.CONTENT_URI);
startActivity(read1);
نتیجه کد بالا تصویری مانند تصویر زیر خواهد شد:
کامپوننت های مقصد که شیئ intent را دریافت می کنند میتوانند از متد getExtras() برای دریافت اطلاعات ارسال شده توسط کامپوننت منبع استفاده کنند . به مثال زیر نگاه کنید:
// Get bundle object at appropriate place in your code
Bundle extras = getIntent().getExtras();
// Extract data using passed keys
String value1 = extras.getString("Key1");
String value2 = extras.getString("Key2");
مثال
مثال هایی که در بالا زدیم نشان دهنده عملکرد یک شیئ Intent اندروید برای اتصال به چندین نرم افزار اندرویدی بود.
گام
|
توضیحات
|
1
|
شما از رابط کاربری اندروید استودیو برای ایجاد نرم افزار اندرویدی و نام گذاری آن به عنوان یک My Application در زیر شاخه packagecom.example.saira_000.myapplication استفاده خواهید کرد.
|
2
|
فایل src/main/java/MainActivity.java را ویرایش کنید و کد های تعریف دو listeners corresponding و دو دکمه شروع جستجو و شروع مکالمه را اضافه کنید.
|
3
|
فایل ظاهر Xml در res/layout/activity_main.xml را برای افزودن سه دکمه به ظاهر خطی را ویرایش کنید.
|
4
|
اپلیکیشن را اجرا کنید تا نرم افزار شبیه ساز اندروید اجرا و نتایج تغییرات اعمال شده به نرم افزار تائید شود.
|
در ادامه کد های تغییر یافته فایل src/com.example.My Application/MainActivity.java. را مشاهده می کنید.
package com.example.saira_000.myapplication;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button b1,b2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1=(Button)findViewById(R.id.button);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("http://www.example.com"));
startActivity(i);
}
});
b2=(Button)findViewById(R.id.button2);
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("tel:9510300000"));
startActivity(i);
}
});
}
}
کدهای زیر کد های تغییر یافته فایل res/layout/activity_main.xml میباشند.
<?xml version="1.0" encoding="utf-8"?>
<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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Intent Example"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="30dp" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials point"
android:textColor="#ff87ff09"
android:textSize="30dp"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton"
android:src="@drawable/abc"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_below="@+id/imageButton"
android:layout_alignRight="@+id/imageButton"
android:layout_alignEnd="@+id/imageButton" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start Browser"
android:id="@+id/button"
android:layout_alignTop="@+id/editText"
android:layout_alignRight="@+id/textView1"
android:layout_alignEnd="@+id/textView1"
android:layout_alignLeft="@+id/imageButton"
android:layout_alignStart="@+id/imageButton" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start Phone"
android:id="@+id/button2"
android:layout_below="@+id/button"
android:layout_alignLeft="@+id/button"
android:layout_alignStart="@+id/button"
android:layout_alignRight="@+id/textView2"
android:layout_alignEnd="@+id/textView2" />
</RelativeLayout>
کد های زیر محتوای فایل res/values/strings.xml برای تعریف دو ثابت جدید است.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">My Applicaiton</string>
</resources>
کد های زیر محتوای پیشفرض فایل AndroidManifest.xml میباشد:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.saira_000.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
حالا نرم افزار My Application را اجرا کنید. ما فرض کرده ایم، که شما شبیه ساز AVD را نصب کرده اید. برای اجرای نرم افزار در اندروید استودیو یکی از فایل های activity پروژه را باز کرده و روی ایکون Run یا اجرا در نوار ابزار کلیک کنید. اندروید استودیو نرم افزار شما را روی شبیه ساز نصب کرده و اگر همه چیر به خوبی پیش رفت شما تصویر زیر را در شبیه ساز مشاهد می کنید:
حالا روی دکمه Start Browser کلیک کنید اینکار یک مرورگر پیکربندی شده را که به دنبال صفحه http://www.example.com می گردد را نشان میدهد.
به همین روش شما میتوانید به صفحه تماس تلفنی بروید کافیست که روی دکمه Start Phone کلیک کنید تا به شما اجازه شماره گیری دهد.
شرکت برنامه نویسی سارگون اماده تولید نرم افزار اندرویدی برای کلیه صاحبان مشاغل بصورت تخصصی میباشد.