2 سال پیش / خواندن دقیقه

آموزش intent ها و فیلترها در اندروید

آموزش intent ها و فیلترها در اندروید

intent توضیحی انتزاعی از عملی است که باید انجام شود. می تواند با startActivity برای راه اندازی یک Activity ، broadcastIntent برای ارسال آن به هر عنصر BroadcastReceiver ، و (startService (Intent یا (bindService (Intent ServiceConnection ,int ، برای ارتباط با خدمات پیش زمینه استفاده شود.

هدف Intent ، یک ساختار داده منفعل است که شرح انتزاعی از عملی را که باید انجام شود ، در اختیار دارد.

به عنوان مثال ، فرض کنید شما فعالیتی دارید که باید راه اندازی یک سرویس گیرنده ایمیل را انجام داده و با استفاده از دستگاه اندروید خود ایمیلی ارسال کند. برای این منظور ، فعالیت شما می تواند ACTION_SEND همراه با انتخاب کننده مناسب را به Android Intent Resolver ارسال کند. انتخاب کننده، رابط مناسب را به کاربر ارائه می دهد تا نحوه ارسال داده های ایمیل خود را انتخاب کند.

Intent email = new Intent(Intent.ACTION_SEND, Uri.parse(“mailto:”));
email.putExtra(Intent.EXTRA_EMAIL, recipients);
email.putExtra(Intent.EXTRA_SUBJECT, subject.getText().toString());
email.putExtra(Intent.EXTRA_TEXT, body.getText().toString());
startActivity(Intent.createChooser(email, “Choose an email client from…”));

کد فوق برای شروع فعالیت ایمیل متد startActivity را فراخوانی می کند که نتیجه باید مطابق شکل زیر باشد –

آموزش intent ها و فیلترها در اندروید

به عنوان مثال ، فرض کنید فعالیتی دارید که باید URL را در یک مرورگر وب در دستگاه اندروید خود باز کند. برای این منظور ، فعالیت شما Intent مربوط به ACTION_WEB_SEARCH را به Android Intent Resolver ارسال می کند تا URL داده شده را در مرورگر وب باز کند. Intent Resolver لیستی از فعالیتها را تجزیه و تحلیل می کند و یکی از مواردی را که به بهترین وجه با Intent شما مطابقت دارد را انتخاب می کند، یعنی Web Browser Activity. Intent Resolver سپس صفحه وب خود را به مرورگر وب منتقل می کند و Web Browser Activity را شروع می کند.

String q = “tutorialspoint”;

Intent intent = new Intent(Intent.ACTION_WEB_SEARCH );

intent.putExtra(SearchManager.QUERY, q);

startActivity(intent);

در بالا tutorialspoint در موتور جستجوی اندروید جستجو می شود و نتیجه جستجو را در فعالیت ارائه می دهد.

مکانیسم های جداگانه ای برای ارائه intent ها به هر نوع مؤلفه وجود دارد – فعالیت ها ، سرویس ها و دریافت کنندگان پیام.

شماره متد و توضیحات
۱ ()Context.startActivity

شی Intent به این متد ارسال می شود تا یک فعالیت جدید یا یک فعالیت موجود را برای انجام کاری جدید راه اندازی کند.

۲ ()Context.startService

شی Intent برای شروع یک سرویس یا ارائه دستورالعمل جدید به یک سرویس در حال انجام به این متد منتقل می شود.

۳ ()Context.sendBroadcast

شی Intent به این متد منتقل می شود تا پیام را به همه دریافت کنندگان پیام مورد نظر ارسال کند.

اشیاء Intent

شی Intent مجموعه ای از اطلاعات است که توسط مؤلفه ای که intent را دریافت می کند و همچنین اطلاعاتی که توسط سیستم اندرویدی دریافت می شود مورد استفاده قرار می گیرد. یک شی intent می تواند بر اساس آنچه در حال برقراری ارتباط است یا اجرا می شود، شامل اجزای زیر باشد –

Action

قسمت اجباری از شی Intent است و رشته ای است که عملی را انجام می دهد – یا در مورد intent های همه پخشی، action ی است که اتفاق می افتد و گزارش می شود. action تا حد زیادی مشخص می کند ساختار باقی مانده شی intent چگونه است. کلاس Intent تعدادی از محدودیت های action را که مربوط به intent های مختلف هستند ، تعریف می کند. در اینجا لیستی از action های استاندارد Intent اندروید آورده شده است.

action در یک شی Intent می تواند با استفاده از متد ()setAction تنظیم شده و توسط ()getAction خوانده شود.

Data

مشخصات داده را در فیلتر intent اضافه کنید. مشخصات می تواند فقط یک data type (ویژگی mimeType) ، فقط یک URI و یا هم data type و هم URI باشد. URI برای هر یک از قسمت های آن با ویژگی های جداگانه مشخص شده است –

این ویژگی هایی که قالب URL را مشخص می کنند اختیاری هستند ، اما به یکدیگر وابسته اند –

  • اگر schema برای فیلتر intent مشخص نشده باشد ، تمام خصوصیات URI دیگر نادیده گرفته می شوند.
  • اگر host برای فیلتر مشخص نشده باشد ، ویژگی port و تمام ویژگی های path نادیده گرفته می شوند.

متد ()setData داده ها را فقط به عنوان URI مشخص می کند ، ()setType آن را فقط به عنوان نوع MIME مشخص می کند ، و ()setDataAndType آن را هم URI و هم نوع MIME مشخص می کند. URI توسط getData() و نوع آن با ()getType خوانده می شود.

برخی از نمونه های زوج های action/data بصورت زیرند:

شماره زوج action/data و توضیحات
۱ ACTION_VIEW content://contacts/people/1

نمایش اطلاعات در مورد شخصی که شناسه آن “۱” است.

۲ ACTION_DIAL content://contacts/people/1

شماره گیر تلفن را با شماره های افراد موجود در آن نمایش می دهد.

۳ ACTION_VIEW tel:123

شماره گیر تلفن را با شماره تلفن مورد نظر در آن نمایش می دهد.

۴ ACTION_DIAL tel:123

شماره گیر تلفن را با شماره مورد نظر در آن نمایش می دهد۱٫

۵ ACTION_EDIT content://contacts/people/1

اطلاعات مربوط به شخصی را که شناسه آن “۱” است ویرایش می کند.

۶ ACTION_VIEW content://contacts/people/

لیستی از افرادی را نمایش می دهد که کاربر می تواند آنها را مرور کند.

۷ ACTION_SET_WALLPAPER

نمایش تنظیمات انتخاب تصویر زمینه

۸ ACTION_SYNC

باعث همگام سازی داده ها می شود، مقدار ثابت android.intent.action.SYNC را دارد.

۹ ACTION_SYSTEM_TUTORIAL

پلتفرم آموزشی که در اولین راه اندازی دستگاه اجرا می شود را آغاز می کند (آموزش پیش فرض یا آموزش راه اندازی).

۱۰ ACTION_TIMEZONE_CHANGED

تغییر منطقه زمانی را گزارش می دهد.

۱۱ ACTION_UNINSTALL_PACKAGE

حذف کننده برنامه را اجرا می کند.

Category

بخشی اختیاری از شی Intent است و رشته ای است که حاوی اطلاعات تکمیلی در مورد نوع مؤلفه ای است که باید intent را کنترل کند. متد ()addCategorie یک category را در یک شیء Intent قرار می دهد ، ()removeCategorie طبقه بندی را که قبلاً اضافه شده بود حذف می کند ، و ()getCategories مجموعه ای از همه طبقه بندی های موجود در شی را بدست می آورد.

می توانید جزئیات مربوط به فیلترهای Intent را در قسمت زیر بررسی کنید تا بدانید که چگونه از category ها برای انتخاب فعالیت مناسب متناسب با Intent استفاده می کنیم.

Extras

این قسمت شامل زوج هایی با مقادیر کلیدی برای اطلاعات اضافی در مورد intent هاست و به مولفه ای که با intent تعامل دارد تحویل داده می شود. اطلاعات اضافی را می توان با استفاده از متد های ()putExtras و ()getExtras به ترتیب تنظیم کرد و خواند.

Flags

این پرچم ها جزء اختیاری از شی Intent هستند و به سیستم اندرویدی نحوه راه اندازی یک فعالیت و نحوه عمل پس از راه اندازی و غیره را آموزش می دهند.

شماره Flags و توضیحات
۱ FLAG_ACTIVITY_CLEAR_TASK

اگر یک Intent به Context.startActivity() ارسال شده باشد ، این flag باعث می شود تا قبل از شروع فعالیت ، فعالیتهای موجود که مشغول پردازش این فعالیت بودند، آزاد شوند. این فقط در رابطه با FLAG_ACTIVITY_NEW_TASK قابل استفاده است.

۲ FLAG_ACTIVITY_CLEAR_TOP

در صورت استفاده از این flag ، هنگام شروع فعالیت، اگر یک واحد سیستمی مشغول پردازش این نوع فعالیت باشد، به جای راه اندازی یک نمونه ی جدید، تمام فعالیت های موجود که قبل از این بوده اند بسته می شوند و intent به عنوان یک intent جدید به آن ها واگذار می شود.

۳ FLAG_ACTIVITY_NEW_TASK

این flag معمولاً توسط فعالیتهایی که می خواهند راه اندازی شوند استفاده می شود. آنها لیستی از کارهایی را که می توان انجام داد به کاربر می دهند ، که در غیر این صورت کاملاً مستقل از فعالیتی که آنها را اجرا می کنند ، اجرا می شوند.

Component Name

قسمت اختیاری یک شیء ComponentName است که کلاس یا فعالیت ، سرویس یا BroadcastReceiver را نشان می دهد. اگر تنظیم شود ، شی Intent به نمونه ای از کلاس تعیین شده تحویل داده می شود ، در غیر این صورت اندروید از اطلاعات دیگری در شی Intent برای یافتن یک شی مناسب استفاده می کند.

نام مؤلفه توسط ()setComponent() ، setClass یا ()setClassName تنظیم می شود و توسط ()getComponent خوانده می شود.

انواع intent ها

دو نوع intent وجود دارد که توسط اندروید پشتیبانی می شود

آموزش intent ها و فیلترها در اندروید

Explicit Intents

برای برقراری ارتباط بین قسمت های داخلی یک نرم افزار استفاده می شوند. فرض کنید می خواهید یک فعالیت را به فعالیت دیگر وصل کنید، می توان این ارتباط را با یک Explicit Intents انجام داد. تصویر زیر ارتباط بین فعالیت اول با فعالیت دوم را پس از کلیک کردن روی دکمه نشان می دهد.

آموزش intent ها و فیلترها در اندروید

این intent ها مؤلفه هدف را با نام آن مشخص می کند و معمولاً برای ارتباط بین کامپوننت های داخلی نرم افزار استفاده می شوند – مانند فعالیتی که شروع به ایجاد یک سرویس فرعی یا فعالیت های خواهر می کند. به عنوان مثال –

// Explicit Intent by specifying its class name

Intent i = new Intent(FirstActivity.this, SecondActivity.class);

// Starts TargetActivity

startActivity(i);

Implicit Intents

این intent ها مقصد را مشخص نمی کنند و فیلد مربوط به component name خالی است. intent های ضمنی اغلب برای فعال کردن مؤلفه ها در برنامه های دیگر استفاده می شود. به عنوان مثال –

Intent read1=new Intent();

read1.setAction(android.content.Intent.ACTION_VIEW);

read1.setData(ContactsContract.Contacts.CONTENT_URI);

startActivity(read1);

کد بالا نتیجه زیر را نمایش می دهد.

آموزش intent ها و فیلترها در اندروید

مؤلفه مقصدی که 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 اندروید را در راه اندازی برنامه های مختلف داخلی اندرویدی نشان می دهد.

شماره توضیحات
۱ می توانید از Android studio IDE برای ایجاد یک برنامه اندرویدی استفاده کنید و آن را با عنوان My Application تحت پکیج com.example.saira_000.myapplication بسازید.
۲ فایل src / main / java / MainActivity.java را تغییر دهید و کد را اضافه کنید تا دو listener متناظر با دو دکمه تعریف شوند. یعنی Start Browser و Start Phone.
۳ فایل XML صفحه بندی res / layout / activity_main.xml/ را تغییر دهید تا سه دکمه به ترتیب خطی اضافه شود.
۴ برنامه را اجرا کنید تا شبیه ساز اندروید راه اندازی شود و نتیجه تغییرات انجام شده در برنامه را نمایش دهد.

در زیر محتوای فایل فعالیت اصلی اصلاح شده 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 خود را ایجاد کرده اید. برای اجرای برنامه در Android Studio ، یکی از فایل های فعالیت پروژه خود را باز کرده و روی گزینه Run Eclipse Run Icon از نوار ابزار کلیک کنید .Android Studio برنامه را در AVD شما نصب می کند و آن را راه اندازی می کند و اگر همه چیز درست باشد، صفحه زیر را نمایش می دهد-

آموزش intent ها و فیلترها در اندروید

اکنون بر روی دکمه Start Browser کلیک کنید ، که یک مرورگر را پیکربندی کرده و http://www.example.com را مانند تصویر زیر نمایش می دهد –

آموزش intent ها و فیلترها در اندروید

به روش مشابه می توانید رابط تلفن را با استفاده از دکمه Start Phone راه اندازی کنید ، که به شما امکان می دهد شماره تلفنی که قبلاً به سیستم داده شده را شماره گیری کنید.

Intent Filters

مشاهده کردید که چگونه از Intent برای فراخوانی فعالیت دیگر استفاده می شود. سیستم عامل اندروید با استفاده از فیلترها می تواند مجموعه فعالیت ها ، سرویس ها و گیرنده های پیام را مشخص کند که تا با کمک مجموعه action ها ، category ها ، data schemaی مرتبط با Intent ، تعامل برقرار کند. شما می توانید از تگ در فایل manifest برای لیست کردن action ها ، category ها و data schemaی مرتبط با Intent ، سرویس ها و گیرنده های پیام استفاده کنید.

در زیر مثالی از فایل AndroidManifest.xml برای مشخص کردن فعالیت com.example.My Application.CustomActivity آورده شده که می توان با استفاده از هر دو روش ذکر شده مورد دسترسی قرار بگیرد و یک category و یک data در آن تعریف شده –

<activity android:name=”.CustomActivity”
android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.VIEW” />
<action android:name=”com.example.My Application.LAUNCH” />
<category android:name=”android.intent.category.DEFAULT” />
<data android:scheme=”http” />
</intent-filter>
</activity>

پس از تعریف این فعالیت به همراه فیلترهای ذکر شده در بالا ، فعالیت های دیگر قادر خواهند بود این فعالیت را با استفاده از android.intent.action.VIEW یا با استفاده از com.example.My Application.LAUNCH فراخوانی کنند. به شرطی که طبقه بندی مربوط به آن ها android.intent.categor.DEFAULT باشد.

تگ نوع داده ای را که انتظار می رود توسط فعالیت فراخوانی شود، مشخص می کند و در مثال بالا فعالیت سفارشی ما انتظار دارد که داده ها با “//:http” شروع شوند.

ممکن است شرایطی وجود داشته باشد که یک intent بتواند به چند فیلتر یا بیش از یک فعالیت یا سرویس داده شود. ممکن است از کاربر سؤال شود که کدام مؤلفه را فعال کند. در صورت عدم یافتن مقصد ، استثنا مطرح می شود.

قبل از فراخوانی یک فعالیت ، بررسی های اندروید زیر انجام می شود –

  • یک فیلتر می تواند همانطور که در بالا نشان داده شد بیش از یک action را لیست کند ، اما این لیست نمی تواند خالی باشد. یک فیلتر باید حداقل یک عنصر را داشته باشد ، در غیر این صورت تمام intent ها را مسدود می کند. اگر بیش از یک action ذکر شده باشد ، اندروید سعی می کند قبل از فراخوانی فعالیت ، یکی از action های ذکر شده را مطابقت دهد.
  • یک فیلتر ممکن است صفر ، یک یا بیش از یک category داشته باشد. اگر هیچ category ذکر نشده باشد ، اندروید همیشه این تست را پشت سر می گذراد ، اما اگر بیش از یک category ذکر شده باشد ، برای اینکه یک intent از این تست عبور کند، تمام category های موجود در شی Intent باید با category موجود در فیلتر مطابقت داشته باشند.
  • هر تگ می تواند URI و یک نوع داده (نوع رسانه MIME) را مشخص کند. برای هر قسمت از URI ویژگیهای جداگانه ای مانند schema ، host ، port و path وجود دارد. یک شیء Intent که حاوی URI و یک نوع داده است ، بخش تست نوع داده را فقط در صورتی پشت سر می گذارد که نوع آن مطابق با نوع ذکر شده در فیلتر باشد.

مثال

مثال زیر اصلاح مثال بالا است. در اینجا خواهیم دید که چگونه اندروید قصد دارد با دو فعالیت تعریف شده در intent ، ناسازگاری را برطرف کند، و پس از آن چطور یک فعالیت سفارشی را با یک فیلتر فراخوانی می کند و در نهایت سراغ استثنا می رویم، هنگامی که هیچ فعالیت مناسبی برای intent تعریف نشده باشد.

مرحله توضیحات
۱ شما می توانید از android studio برای ایجاد یک برنامه اندرویدی استفاده کنید و آن را تحت عنوان My Application و تحت پکیج com.example.tutorialspoint7.myapplication ایجاد کنید.
۲ فایل src / Main / Java / MainActivity.java را تغییر داده و کد های مربوط به سه listener سه دکمه تعریف شده را در فایل layout اضافه کنید.
۳ یک فایل جدید src / Main / Java / CustomActivity.java اضافه کنید تا یک فعالیت سفارشی داشته باشد که با intent های مختلف فراخوانی شود.
۴ فایل XML صفحه بندی res / layout / activ_main.xml را تغییر دهید تا سه دکمه به ترتیب خطی اضافه کنید.
۵ فایل XML صفحه بندی res/layout/custom_view.xml را برای اضافه کردن یک تگ برای نمایش داده های ارسال شده از طریق intent اضافه کنید.
۶ AndroidManifest.xml را برای افزودن اصلاح کنید تا قوانینی را برای intent خود برای استناد به فعالیتهای سفارشی تعریف کنید.
۷ برنامه را اجرا کنید تا شبیه ساز اندروید راه اندازی شود و نتیجه تغییرات در برنامه را نمایش دهد.

در زیر محتوای فایل فعالیت اصلی src / MainActivity.java اصلاح شده است.

package com.example.tutorialspoint7.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,b3;

@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(“com.example.

tutorialspoint7.myapplication.

LAUNCH”,Uri.parse(“http://www.example.com”));

startActivity(i);

}

});

b3 = (Button)findViewById(R.id.button3);

b3.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent i = new Intent(“com.example.

My Application.LAUNCH”,

Uri.parse(“https://www.example.com”));

startActivity(i);

}

});

}

}

در زیر محتوای فایل فعالیت اصلی src / com.example.My Application / CustomActivity.java تغییر یافته است.

package com.example.tutorialspoint7.myapplication;

import android.app.Activity;

import android.net.Uri;

import android.os.Bundle;

import android.widget.TextView;

/**

* Created by TutorialsPoint7 on 8/23/2016.

*/

public class CustomActivity extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.custom_view);

TextView label = (TextView) findViewById(R.id.show_data);

Uri url = getIntent().getData();

label.setText(url.toString());

}

}

در زیر محتوای فایل res / layout / activ_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: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.tutorialspoint7.myapplication.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_alignLeft=”@+id/imageButton”

android:layout_alignStart=”@+id/imageButton”

android:layout_alignEnd=”@+id/imageButton” />

<Button

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:text=”Start browsing with launch action”

android:id=”@+id/button2″

android:layout_below=”@+id/button”

android:layout_alignLeft=”@+id/button”

android:layout_alignStart=”@+id/button”

android:layout_alignEnd=”@+id/button” />

<Button

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:text=”Exceptional condition”

android:id=”@+id/button3″

android:layout_below=”@+id/button2″

android:layout_alignLeft=”@+id/button2″

android:layout_alignStart=”@+id/button2″

android:layout_toStartOf=”@+id/editText”

android:layout_alignParentEnd=”true” />

</RelativeLayout>

در زیر محتوای فایل res/layout/custom_view.xml file آورده شده است:

<?xml version=”1.0″ encoding=”utf-8″?>

<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”

android:orientation=”vertical” android:layout_width=”match_parent”

android:layout_height=”match_parent”>

<TextView android:id=”@+id/show_data”

android:layout_width=”fill_parent”

android:layout_height=”400dp”/>

</LinearLayout>

در زیر محتوای res/values/strings.xml برای تعریف دو ثابت جدید آورده شده است:

<?xml version=”1.0″ encoding=”utf-8″?>

<resources>

<string name=”app_name”>My Application</string>

</resources>

در زیر محتوای پیش فرض AndroidManifest.xml آمده است:

<?xml version=”1.0″ encoding=”utf-8″?>

<manifest xmlns:android=”http://schemas.android.com/apk/res/android”

package=”com.example.tutorialspoint7.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>


<activity android:name=”com.example.tutorialspoint7.myapplication.CustomActivity”>

<intent-filter>

<action android:name = “android.intent.action.VIEW” />

<action android:name = “com.example.tutorialspoint7.myapplication.LAUNCH” />

<category android:name = “android.intent.category.DEFAULT” />

<data android:scheme = “http” />

</intent-filter>

</activity>

</application>

</manifest>

برنامه My Application خود را اجرا کنید. فرض می کنیم هنگام انجام تنظیمات محیطی ، AVD خود را ایجاد کرده اید. برای اجرای برنامه در Android Studio ، یکی از فایل های فعالیت پروژه خود را باز کرده و از نوار ابزار ، روی گزینه Run Eclipse Run Icon کلیک کنید. Android Studio برنامه را در AVD شما نصب می کند و آن را راه اندازی می کند و اگر همه چیز درست باشد ، پنجره Emulator زیر نمایش داده می شود –

آموزش intent ها و فیلترها در اندروید

حالا بیایید با اولین دکمه “Start Browser with VIEW Action” شروع کنیم. در اینجا فعالیتهای سفارشی خود را با فیلتر “android.intent.action.VIEW” تعریف کرده ایم ، و در حال حاضر یک فعالیت پیش فرض در برابر عملکرد VIEW تعریف شده توسط اندروید وجود دارد که در حال راه اندازی مرورگر وب است ، بنابراین اندروید دو گزینه زیر را برای انتخاب فعالیت شما نمایش می دهد.

آموزش intent ها و فیلترها در اندروید

اکنون اگر Browser را انتخاب کنید ، اندروید مرورگر وب را راه اندازی می کند و سایت shembull.com را باز می کند اما اگر گزینه IndentDemo را انتخاب کنید ، اندروید CustomActivity را راه اندازی می کند که هیچ کاری جز گرفتن داده های وارد شده و نمایش در غالب متن نمی کند –

آموزش intent ها و فیلترها در اندروید

اکنون از دکمه back استفاده کنید و بر روی دکمه “Start Browser with LAUNCH Action” کلیک کنید ، در اینجا اندروید برای انتخاب تعریف فعالیت، فیلتر را اعمال می کند و به راحتی فعالیت سفارشی شما را راه اندازی می کند.

باز هم با استفاده از دکمه back به عقب برگردید و بر روی دکمه “Exception Condition” کلیک کنید ، در اینجا اندروید سعی می کند یک فیلتر معتبر را برای intent مشخص پیدا کند اما یک فعالیت معتبر تعریف شده را پیدا نمی کند زیرا این بار ما به جای http از https استفاده کردیم. بنابراین اندروید یک حالت استثنا را اعلام می کند و پنجره زیر را نمایش می دهد-

آموزش intent ها و فیلترها در اندروید

شاید از نوشته‌های زیر خوشتان بیاید
نظر خود را درباره این پست بنویسید ...

منوی سریع