مشخصات مقاله
-
3387
-
0.0
-
4224
-
0
-
0
آموزش Intent در اندروید-intent های ضمنی
دوره آموزش برنامه نویسی اندروید
کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.
آموزش Intent در اندروید )قسمت چهارم(
تست
پس از تست اجرای برنامه، می توانید تصویری از کتابخانه ی تصویر (image library) خود انتخاب کرده و آن را به ImageView تخصیص دهید.
12. تمرین : استفاده از intent های ضمنی مختلف
هدف تمرین
تمرین زیر کاربرد intent های ضمنی به منظور راه اندازی activity در سیستم اندروید را با مثال تشریح می کند.
ساختن پروژه
پروژه ای با نام de.vogella.android.intent.implicit و activity به نام CallIntentActivity ایجاد کنید.
در این مثال با استفاده از وییو Spinner، انتخاب می کنید کدام intent فعال شود و برای محتوای Spinner نیز مقادیر ایستا (static values) تعریف می کنید.
فایل intents.xml زیر را در پوشه ی res/values ایجاد کنید.
<resources>
<string-array name="intents">
<item>Open Browseritem>
<item>Call Someoneitem>
<item>Dialitem>
<item>Show Mapitem>
<item>Search on Mapitem>
<item>Take pictureitem>
<item>Show contactsitem>
<item>Edit first contactitem>
string-array>
resources>
فایل طرح بندی activity را به کد زیر تغییر دهید.
xml version="1.0" encoding="utf-8" ?>
<gridlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alignmentmode="alignBounds"
android:columncount="1">
<spinner android:id="@+id/spinner"
android:layout_gravity="fill_horizontal"
android:drawselectorontop="true"
>
Spinner>
<button android:id="@+id/trigger"
android:onclick="onClick"
android:text="Trigger Intent">
Button>
gridlayout>
برای اینکه بتوانیم برخی از intent ها را بکارببریم، باید مجوز لازمه را در فایل AndroidManifest.xml تعریف کنید. به یاد داشته باشید که فایل AndroidManifest.xml باید تمامی مجوزهایی را که در لیست زیر فهرست شده در خود داشته باشد.
xml version="1.0" encoding="utf-8" ?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.vogella.android.intent.implicit"
android:versioncode="1"
android:versionname="1.0">
<uses-sdk android:minsdkversion="15" />
<uses-permission android:name="android.permission.CALL_PRIVILEGED">
uses-permission>
<uses-permission android:name="android.permission.CALL_PHONE">
uses-permission>
<uses-permission android:name="android.permission.CAMERA">
uses-permission>
<uses-permission android:name="android.permission.READ_CONTACTS">
uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<application android:icon="@drawable/icon"
android:label="@string/app_name">
<activity android:name=".CallIntentsActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
intent-filter>
activity>
application>
manifest>
کلاس activity خود را به کد زیر تغییر دهید.
package de.vogella.android.intent.implicit;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
public class CallIntentsActivity extends Activity {
private Spinner spinner;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter adapter = ArrayAdapter.createFromResource(this،
R.array.intents، android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
}
public void onClick(View view) {
int position = spinner.getSelectedItemPosition();
Intent intent = null;
switch (position) {
case 0:
intent = new Intent(Intent.ACTION_VIEW،
Uri.parse("http://www.vogella.com"));
break;
case 1:
intent = new Intent(Intent.ACTION_CALL،
Uri.parse("tel:(+49)12345789"));
break;
case 2:
intent = new Intent(Intent.ACTION_DIAL،
Uri.parse("tel:(+49)12345789"));
startActivity(intent);
break;
case 3:
intent = new Intent(Intent.ACTION_VIEW،
Uri.parse("geo:50.123،7.1434?z=19"));
break;
case 4:
intent = new Intent(Intent.ACTION_VIEW،
Uri.parse("geo:0،0?q=query"));
break;
case 5:
intent = new Intent("android.media.action.IMAGE_CAPTURE");
break;
case 6:
intent = new Intent(Intent.ACTION_VIEW،
Uri.parse("content://contacts/people/"));
break;
case 7:
intent = new Intent(Intent.ACTION_EDIT،
Uri.parse("content://contacts/people/1"));
break;
}
if (intent != null) {
startActivity(intent);
}
}
@Override
public void onActivityResult(int requestCode، int resultCode، Intent data) {
if (resultCode == Activity.RESULT_OK && requestCode == 0) {
String result = data.toURI();
Toast.makeText(this، result، Toast.LENGTH_LONG);
}
}
}
تست برنامه
اگر برنامه را اجرا کنید، فهرستی از دکمه های موجود را مشاهده می کنید که در صورت زدن هریک از آن ها، activity هایی که تعریف کرده اید راه اندازی می شوند.
توجه
به خاطر داشته باشید که هیچ activity دریافت کننده ای مشخص نکردیم بلکه فقط عملیاتی (action) که باید انجام شود را تعریف کردیم. شما قادرید با استفاده از این روش تَسک هایی تعریف کنید که مولفه های اپلیکیشن های مختلف را مورد استفاده قرار می دهند.
