شرح Intent في الاندرويد

شرح Intent  في Android مع أمثلة وأنواعه

يستخدم Android Intent للتواصل بين مكونات التطبيق وأيضًا من تطبيق إلى تطبيق آخر.

Intent هي الكائنات المستخدمة في android لتمرير المعلومات بين الأنشطة في التطبيق ومن تطبيق إلى آخر أيضًا. تُستخدم Intent للتواصل بين مكونات التطبيق وتوفر أيضًا الاتصال بين تطبيقين.

على سبيل المثال: Intent تسهل عليك إعادة توجيه نشاطك إلى نشاط آخر عند حدوث أي حدث. من خلال استدعاء startActivity () يمكنك تنفيذ هذه المهمة.

Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
  startActivity(intent);

في المثال أعلاه ، تتم إعادة توجيه النشاط الأمامي إلى نشاط آخر ، مثل SecondActivity. جافا . يُرجع getApplicationContext () سياق نشاط المقدمة.


أنواع Intent 

Intent نوعان: النية الصريحة والنية الضمنية

أنواع النوايا
Explicit Intent  :

  • يتم استخدام النوايا الصريحة Explicit Intent لتوصيل التطبيق داخليًا.
  • بشكل صريح ، نستخدم اسم المكون الذي سيتأثر بالنوايا. على سبيل المثال: إذا كنا نعرف اسم الفصل ، فيمكننا التنقل في التطبيق من نشاط واحد إلى نشاط آخر باستخدام Intent. بنفس الطريقة يمكننا بدء خدمة لتنزيل ملف في الخلفية.

تعمل النية الصريحة Explicit Intent داخليًا داخل تطبيق ما لأداء التنقل ونقل البيانات. سيساعدك مقتطف الشفرة الوارد أدناه على فهم مفهوم النوايا الصريحة

Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
  startActivity(intent);

هنا SecondActivity هو اسم فئة JAVA حيث سيتم الآن التنقل في النشاط. مثال مع رمز في نهاية هذا المنشور سيجعله أكثر وضوحًا.

مثال صريح على النية
Implicit Intent :

  • في النوايا الضمنية Implicit Intent نحتاج إلى تحديد اسم المكون. نحن نحدد فقط الإجراء الذي يجب تنفيذه ويتم التعامل مع هذا الإجراء بواسطة مكون تطبيق آخر.
  • المثال الأساسي للنية الضمنية Implicit Intent هو فتح أي صفحة ويب

لنأخذ مثالاً لفهم النوايا الضمنية بشكل أكثر وضوحًا. علينا فتح موقع على شبكة الإنترنت باستخدام النية في التطبيق الخاص بك. انظر مقتطف الرمز الوارد أدناه

Intent intentObj = new Intent(Intent.ACTION_VIEW);
  intentObj.setData(Uri.parse("https://www.abhiandroid.com"));
  startActivity(intentObj);

على عكس النية الصريحة ، لا تستخدم أي اسم فئة لتمرير Intent (). في هذا المثال ، حددنا للتو إجراءً. الآن عندما سنقوم بتشغيل هذا الرمز ، سيبدأ Android تلقائيًا متصفح الويب الخاص بك وسيفتح صفحة AbhiAndroid الرئيسية.

مثال القصد الضمني


مثال على Intent في Android 

دعونا ننفذ النية لاستخدام أساسي للغاية. في المثال أدناه ، سننتقل من نشاط إلى آخر ونفتح صفحة ويب رئيسية لتطبيق AbhiAndroid باستخدام Intent. سيوضح لك المثال كلاً من النية الضمنية والصريحة معًا. فيما يلي الناتج النهائي:

مخرجات مثال القصد الضمني والصريح في Android
أنشئ مشروعًا في Android Studio وأطلق عليه اسم "Intents". قم بنشاط يتكون من ملف جافا ؛ MainActivity.java وملف xml لواجهة المستخدم والذي سيكون activity_main. xml

الخطوة 1: لنصمم واجهة المستخدم الخاصة بـ activity_main.xml:

  • قم أولاً بتصميم عرض النص الذي يعرض التفاصيل الأساسية للتطبيق
  • تصميم الثانية وهما زر من مثال القصد الصريح والضمني مثال النوايا

يوجد أدناه الكود الكامل لـ activity_main.xml

<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:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:textAppearance="?android:attr/textAppearanceMedium"
  android:text="If you click on Explicit example we will navigate to second activity within App and if you click on Implicit example AbhiAndroid Homepage will open in Browser"
  android:id="@+id/textView2"
  android:clickable="false"
  android:layout_alignParentTop="true"
  android:layout_alignParentStart="true"
  android:layout_marginTop="42dp"
  android:background="#3e7d02"
  android:textColor="#ffffff" />

  <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="Explicit Intent Example"
  android:id="@+id/explicit_Intent"
  android:layout_alignParentTop="true"
  android:layout_centerHorizontal="true"
  android:layout_marginTop="147dp" />

  <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="Implicit Intent Example"
  android:id="@+id/implicit_Intent"
  android:layout_centerVertical="true"
  android:layout_centerHorizontal="true" />

  </RelativeLayout>

الخطوة 2: تصميم واجهة المستخدم الخاصة بالنشاط الثاني activity_second.xml

يتيح الآن تصميم واجهة مستخدم لنشاط آخر حيث سينتقل المستخدم بعد أن ينقر على زر مثال صريح . انتقل إلى مجلد التخطيط ، وأنشئ نشاطًا جديدًا وقم بتسميته Activity_second. xml .

  • في هذا النشاط ، سنستخدم TextView ببساطة لإخبار المستخدم بأنه يقوم الآن بالنشاط الثاني.

يوجد أدناه الكود الكامل لـ activity_second.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"
  android:background="#CCEEAA"
  tools:context="com.example.android.intents.SecondActivity">

  <TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:textAppearance="?android:attr/textAppearanceLarge"
  android:text="This is Second Activity"
  android:id="@+id/textView"
  android:layout_centerVertical="true"
  android:layout_centerHorizontal="true" />
  </RelativeLayout>

الخطوة 3: تنفيذ حدث onClick للزر الضمني والصريح داخل MainActivity.java

الآن سوف نستخدم طريقة setOnClickListener () لتنفيذ حدث OnClick على كلا الزر . سيفتح الزر الضمني الصفحة الرئيسية AbhiAndroid.com في المتصفح وسينتقل الزر الصريح إلى SecondActivity.java.

يوجد أدناه الرمز الكامل لـ MainActivity.java

package com.example.android.intents;

  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 explicit_btn, implicit_btn;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);


  explicit_btn = (Button)findViewById(R.id.explicit_Intent);
  implicit_btn = (Button) findViewById(R.id.implicit_Intent);

  //implement Onclick event for Explicit Intent

  explicit_btn.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {

  Intent intent = new  Intent(getBaseContext(), SecondActivity.class);
  startActivity(intent);


  }
  });

  //implement onClick event for Implicit Intent

  implicit_btn.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {

  Intent intent = new Intent(Intent.ACTION_VIEW);
  intent.setData(Uri.parse("https://www.abhiandroid.com"));
  startActivity(intent);
  }
  });


  }
  }

الخطوة 4: قم بإنشاء اسم فئة JAVA جديد SecondActivity

نحتاج الآن إلى إنشاء SecondActivity.java أخرى والتي ستفتح ببساطة تنسيق activity_second.xml. سنستخدم أيضًا Toast لعرض رسالة مفادها أنه في نشاط ثانٍ.

فيما يلي الكود الكامل لـ SecondActivity.java:

package com.example.android.intents;

  import android.support.v7.app.AppCompatActivity;
  import android.os.Bundle;
  import android.widget.Toast;

  public class SecondActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_second);

  Toast.makeText(getApplicationContext(), "We are moved to second Activity",Toast.LENGTH_LONG).show();
  }
  }

الخطوة 5: ملف البيان:

تأكد من أن ملف Manifest يحتوي على كل من MainActivity و SecondActivity. هنا أيضًا MainActivity هو نشاطنا الرئيسي الذي سيتم إطلاقه أولاً. لذا تأكد من إضافة مرشح intent-filter بشكل صحيح أسفل MainActivity مباشرة.

فيما يلي رمز ملف Manifest:

<?xml version="1.0" encoding="utf-8"?>
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.android.intents" >

  <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=".SecondActivity" >

  </activity>
  </application>

  </manifest>

انتاج:

الآن قم بتشغيل البرنامج أعلاه في المحاكي الخاص بك. سيبدو التطبيق كما يلي:

مخرجات مثال القصد الضمني والصريح في Android
انقر أولاً على مثال صريح النية. سيتم فتح SecondActivity داخل التطبيق:

مثال صريح على النية
عد الآن إلى Emulator وانقر على Implicit Intent Example. سيتم فتح الصفحة الرئيسية AbhiAndroid.com في المتصفح (تأكد من توفر اتصال بالإنترنت):

مثال القصد الضمني


استخدامات Intent في Android

يستخدم Android النوايا لتسهيل الاتصال بين مكوناته مثل الأنشطة والخدمات وأجهزة استقبال البث.

نية نشاط:

تمثل كل شاشة في تطبيق Android نشاطًا. لبدء نشاط جديد ، تحتاج إلى تمرير كائن Intent إلى طريقة startActivity (). يساعد كائن النية هذا في بدء نشاط جديد وتمرير البيانات إلى النشاط الثاني.

النية للخدمات:

تعمل الخدمات في خلفية تطبيق Android ولا تتطلب أي واجهة مستخدم. يمكن استخدام النوايا لبدء خدمة تؤدي مهمة لمرة واحدة (على سبيل المثال: تنزيل بعض الملفات) أو لبدء خدمة تحتاج إلى تمرير أسلوب Intent to startService ().

نية لأجهزة استقبال البث:

هناك العديد من الرسائل التي يتلقاها التطبيق ، وتسمى هذه الرسائل باسم أجهزة استقبال البث. (على سبيل المثال ، يمكن بدء رسالة إذاعية للإشارة إلى أن تنزيل الملف قد اكتمل وجاهز للاستخدام). يبدأ نظام Android بعض رسائل البث في العديد من الأحداث ، مثل System Reboot و Low Battery التحذير وما إلى ذلك.


أهمية استخدام النوايا في تطبيقات Android

كلما احتجت إلى الانتقال إلى نشاط آخر لتطبيقك أو كنت بحاجة إلى إرسال بعض المعلومات إلى النشاط التالي ، يمكننا دائمًا تفضيل النوايا للقيام بذلك.

من السهل حقًا التعامل مع النوايا وهي تسهل الاتصال بمكونات وأنشطة التطبيق الخاص بك. علاوة على ذلك ، يمكنك التواصل مع تطبيق آخر وإرسال بعض البيانات إلى تطبيق آخر باستخدام Intents.