Intent و فیلتر در برنامه نویسی اندروید

4 سال پیش

Intent و فیلتر در برنامه نویسی اندروید

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

 

اندروید Intent یک شرح انتزاعی از عملیاتی است که باید انجام شود. این می تواند با startActivity برای راه اندازی یک فعالیت، BroadcastIntent برای ارسال آن به سایر مولفه های گیرنده BroadcastReceiver و (startService (Intent یا (bindService (Intent، ServiceConnection، int برای برقراری ارتباط با یک سرویس پس زمینه استفاده شود.

به عنوان مثال، فرض کنید شما فعالیتی دارید که برای راه اندازی سرویس گیرنده ایمیل نیاز دارد و با استفاده از دستگاه اندروید شما ایمیل ارسال می کند. برای این منظور، فعالیت شما 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 برای شروع فعالیت ایمیل است و نتیجه باید مطابق شکل زیر باشد

 

 

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

 

String q = "tutorialspoint";
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH );
intent.putExtra(SearchManager.QUERY, q);
startActivity(intent);

در مثال بالا به عنوان tutorialspoint در موتور جستجوگر اندروید می شود و نتیجه آموزش در فعالیت شماست

۱- ()Context.startActivity 

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

۲-()Context.startService 

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

۳-()Context.sendBroadcast 

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

اشیا Intent در برنامه نویسی اندروید

اشیا Intent یک بسته اطلاعاتی است که توسط مولفه دریافت کننده intent و همچنین اطلاعات استفاده شده توسط سیستم اندروید استفاده می شود.

یک شی Int Intent بر اساس آنچه برای برقراری ارتباط یا قرار است انجام دهد می تواند شامل اجزای زیر باشد:

Action

این قسمت اجباری شی Intent است و رشته ای است که عملی را که باید انجام شود نامگذاری می کند. این عمل تا حد زیادی تعیین می کند که بقیه شی int چیست. کلاس Intent تعدادی ثابت عمل مربوط به اهداف مختلف را تعریف می کند.

داده ها

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

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

  • اگر طرحی برای فیلتر intent مشخص نشده باشد، سایر ویژگی های URI نادیده گرفته می شوند.
  • اگر یک میزبان برای فیلتر مشخص نشده باشد، ویژگی پورت و تمام ویژگی های مسیر نادیده گرفته می شوند.

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

چند نمونه از جفت های عملکرد / داده عبارتند از:

۱- 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

برای اجرای حذف نصب پیش فرض استفاده می شود.

دسته بندی

این دسته بخشی اختیاری از شی Intent است و رشته ای است که شامل اطلاعات اضافی درباره نوع مولفه ای است که باید هدف را کنترل کند. متد ()addCategory  یک دسته را در یک شی Intent قرار می دهد، ()removeCategory  یک دسته را که قبلاً اضافه شده بود حذف می کند و ()getCategories مجموعه تمام دسته های موجود در شی را می گیرد.

موارد اضافی

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

پرچم ها

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

 

۱- FLAG_ACTIVITY_CLEAR_TASK

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

۲-FLAG_ACTIVITY_CLEAR_TOP

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

۳- FLAG_ACTIVITY_NEW_TASK

این پرچم به طور کلی توسط فعالیت هایی استفاده می شود که می خواهند رفتاری به سبک “پرتابگر” را ارائه دهند: آنها لیستی از کارهای جداگانه ای را که می توان انجام داد به کاربر می دهند، در غیر این صورت کاملاً مستقل از فعالیت راه اندازی کننده آنها اجرا می شود.

نام قطعه

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

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

انواع Intent

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

 

Intent های صریح

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

 

این Intent ها، مولفه مورد نظر را با نام آن مشخص می کنند و معمولاً برای پیامهای داخلی برنامه کاربردی استفاده می شوند – مانند فعالیتی که سرویس زیرمجموعه ای را شروع می کند یا  sister activity را راه اندازی می کند. به عنوان مثال –

// Explicit Intent by specifying its class name
Intent i = new Intent(FirstActivity.this, SecondActivity.class);

// Starts TargetActivity
startActivity(i);

Intent های ضمنی

این Intent ها، هدف را نام نمی برند و قسمت نام مولفه خالی است. از Intent های ضمنی غالباً برای فعال سازی اجزا در برنامه های دیگر استفاده می شود. به عنوان مثال:

 

مولفه هدف که Intent را دریافت می کند می تواند از روش ()getExtras برای دریافت اطلاعات اضافی ارسال شده توسط مولفه منبع استفاده کند. به عنوان مثال:

Intent read1=new Intent();
read1.setAction(android.content.Intent.ACTION_VIEW);
read1.setData(ContactsContract.Contacts.CONTENT_URI);
startActivity(read1);

 

مثال

مثال زیر عملکرد Android Intent را برای راه اندازی برنامه های داخلی  مختلف نشان می دهد.

شرح مراحل

۱ شما برای ایجاد یک برنامه اندروید از Android studio IDE استفاده خواهید کرد و نام آن را به عنوان My Application تحت یک بسته com.example.saira_000.myapplication قرار دهید.
۲ پرونده src / main / java / MainActivity.java را تغییر دهید و کد را برای تعریف دو شنونده متناظر با دو دکمه اضافه کنید. مرورگر و تلفن را شروع کنید.
۳ طرح 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>

 

بیایید سعی کنیم برنامه خود را اجرا کنیم! من تصور می کنم شما AVD خود را هنگام راه اندازی محیط ایجاد کرده اید. برای اجرای برنامه از Android studio، یکی از پرونده های فعالیت پروژه خود را باز کنید و از نوار ابزار روی Android StudioRun Icon کلیک کنید. Android Studio برنامه را روی AVD شما نصب کرده و شروع به کار می کند و اگر با تنظیمات و برنامه هایتان همه چیز خوب باشد، زیر پنجره شبیه ساز نمایش داده می شود.

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

 

 

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

فیلترهای Intent

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

 

در زیر مثالی از بخشی از پرونده AndroidManifest.xml برای تعیین فعالیت com.example.My Application.CustomActivity آورده شده است که می تواند توسط هر دو عمل ذکر شده، یک دسته و یک داده فراخوانی شود –

<activity android:name=".CustomActivity"
   android:label="@string/app_name">
<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>

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

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

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

قبل از فراخوانی activity، بررسی های زیر اندروید وجود دارد:

  • یک فیلتر <intent-filter> ممکن است بیش از یک عمل را نشان دهد همانطور که در بالا نشان داده شده است اما این لیست نمی تواند خالی باشد. یک فیلتر باید حداقل شامل یک عنصر <action> باشد، در غیر این صورت تمام اهداف را مسدود می کند. اگر بیش از یک عملکرد ذکر شده باشد ، اندروید سعی می کند قبل از فراخوانی فعالیت، یکی از اقدامات ذکر شده را مطابقت دهد.
  • یک فیلتر <intent-filter> ممکن است صفر، یک یا چند دسته را لیست کند. اگر هیچ دسته ای ذکر نشده باشد، اندروید همیشه این تست را می گذراند.
  • هر عنصر <data> می تواند یک URI و یک نوع داده (نوع رسانه MIME) را مشخص کند. ویژگی های جداگانه ای مانند طرح، میزبان، پورت و مسیر برای هر قسمت از URI وجود دارد. یک شی  Intent که هم شامل یک URI است و هم یک نوع داده، فقط در صورت مطابقت نوع نوع آن با نوع ذکر شده در فیلتر، قسمت داده داده آزمون را منتقل می کند.

مثال

شرح مراحل

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

در زیر محتوای پرونده فعالیت اصلی تغییر یافته 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 / 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: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 وجود دارد –

<?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>

 

بیایید سعی کنیم برنامه خود را اجرا کنیم! من تصور می کنم شما AVD خود را هنگام راه اندازی محیط ایجاد کرده اید. برای اجرای برنامه از Android studio، یکی از پرونده های فعالیت پروژه خود را باز کنید و از نوار ابزار روی Android StudioRun Icon کلیک کنید. Android Studio برنامه را روی AVD شما نصب کرده و شروع به کار می کند و اگر با تنظیمات و برنامه هایتان همه چیز خوب باشد، زیر پنجره شبیه ساز نمایش داده می شود.

 

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

 

اگر Browser را انتخاب کنید،مرورگر وب را راه اندازی کرده و وب سایت example.com را باز می کند اما اگر گزینه IndentDemo را انتخاب کنید، Android CustomActivity را راه اندازی می کند که کاری غیر از ضبط داده های عبور داده شده و نمایش در یک متن به شرح زیر است

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

منبع.

لیست جلسات قبل آموزش برنامه نویسی اندروید

  1. نگاهی کلی به برنامه نویسی اندروید
  2. تنظیمات محیط  در برنامه نویسی اندروید
  3. معماری برنامه نویسی اندروید
  4. اجزای برنامه در برنامه نویسی اندروید
  5. Hello World در برنامه نویسی اندروید
  6. سازماندهی و دسترسی به منابع در برنامه نویسی اندروید
  7. فعالیت در برنامه نویسی اندروید
  8. سرویس در برنامه نویسی اندروید
  9. گیرنده های پخش در برنامه نویسی اندروید
  10. ارائه دهنده محتوا در برنامه نویسی اندروید
  11. قطعات در برنامه نویسی اندروید
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه