شرح Intent في Android مع أمثلة وأنواعه
يستخدم Android Intent للتواصل بين مكونات التطبيق وأيضًا من تطبيق إلى تطبيق آخر.
Intent هي الكائنات المستخدمة في android لتمرير المعلومات بين الأنشطة في التطبيق ومن تطبيق إلى آخر أيضًا. تُستخدم Intent للتواصل بين مكونات التطبيق وتوفر أيضًا الاتصال بين تطبيقين.
على سبيل المثال: Intent تسهل عليك إعادة توجيه نشاطك إلى نشاط آخر عند حدوث أي حدث. من خلال استدعاء startActivity () يمكنك تنفيذ هذه المهمة.
Intent intent = new Intent(getApplicationContext(), SecondActivity.class); startActivity(intent);
في المثال أعلاه ، تتم إعادة توجيه النشاط الأمامي إلى نشاط آخر ، مثل SecondActivity. جافا . يُرجع getApplicationContext () سياق نشاط المقدمة.
جدول المحتويات
أنواع Intent
Intent نوعان: النية الصريحة والنية الضمنية

- يتم استخدام النوايا الصريحة Explicit Intent لتوصيل التطبيق داخليًا.
- بشكل صريح ، نستخدم اسم المكون الذي سيتأثر بالنوايا. على سبيل المثال: إذا كنا نعرف اسم الفصل ، فيمكننا التنقل في التطبيق من نشاط واحد إلى نشاط آخر باستخدام Intent. بنفس الطريقة يمكننا بدء خدمة لتنزيل ملف في الخلفية.
تعمل النية الصريحة Explicit Intent داخليًا داخل تطبيق ما لأداء التنقل ونقل البيانات. سيساعدك مقتطف الشفرة الوارد أدناه على فهم مفهوم النوايا الصريحة
Intent intent = new Intent(getApplicationContext(), SecondActivity.class); startActivity(intent);
هنا SecondActivity هو اسم فئة JAVA حيث سيتم الآن التنقل في النشاط. مثال مع رمز في نهاية هذا المنشور سيجعله أكثر وضوحًا.

- في النوايا الضمنية 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. سيوضح لك المثال كلاً من النية الضمنية والصريحة معًا. فيما يلي الناتج النهائي:

الخطوة 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>
انتاج:
الآن قم بتشغيل البرنامج أعلاه في المحاكي الخاص بك. سيبدو التطبيق كما يلي:



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