0Pricing
Android Academy · درس

النوايا والتنقّل

تنقّل بين Activities باستخدام Intents صريحة، ومرّر البيانات باستخدام putExtra/getExtra، وشغّل التطبيقات الخارجية باستخدام Intents ضمنية.

النوايا والتنقّل درس مجاني في Android Academy على CoddyKit. هذا هو الدرس 5 من أصل 7. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Android Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Android Academy 7 دروس في المجموع.

ما هو Intent؟

إن Intent رسالة تخبر Android بتنفيذ إجراء معين:

  • Explicit Intent — تشغيل Activity محدد في تطبيقك
  • Implicit Intent — مطالبة Android بالعثور على تطبيق يمكنه تنفيذ الإجراء (فتح عنوان URL أو الاتصال برقم أو مشاركة نص)

تُعد Intents الطريقة الأساسية لتواصل Activities مع بعضها.

Explicit Intent: فتح شاشة

شغّل Activity آخر في تطبيقك:

// In your button click listener:
binding.btnGoToDetail.setOnClickListener {
    val intent = Intent(this, DetailActivity::class.java)
    startActivity(intent)
}

// To also close the current screen after navigating:
binding.btnLogin.setOnClickListener {
    val intent = Intent(this, HomeActivity::class.java)
    startActivity(intent)
    finish() // removes LoginActivity from back stack
}

تمرير البيانات باستخدام Extras

استخدم extras لتمرير البيانات إلى Activity التالي:

  • intent.putExtra("key", value) — إرفاق البيانات
  • intent.getStringExtra("key") — استرداد String
  • intent.getIntExtra("key", defaultValue) — استرداد Int

استخدم ثوابت للمفاتيح لتجنب الأخطاء الإملائية.

تمرير Extras واستلامها

أرسل البيانات من Activity واقرأها في Activity التالي:

// Sending Activity:
val intent = Intent(this, DetailActivity::class.java)
intent.putExtra("PRODUCT_ID", 42)
intent.putExtra("PRODUCT_NAME", "Laptop")
startActivity(intent)

// DetailActivity — receiving:
class DetailActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_detail)

        val id = intent.getIntExtra("PRODUCT_ID", -1)
        val name = intent.getStringExtra("PRODUCT_NAME") ?: ""
        // Use id and name to load data
    }
}

Implicit Intents

تتيح Implicit Intents لتطبيقك استخدام ميزات من تطبيقات أخرى مثبّتة من دون معرفة التطبيق الذي سيتولى تنفيذها:

  • فتح عنوان ويب URL في المتصفح
  • الاتصال برقم هاتف
  • إرسال بريد إلكتروني
  • مشاركة نص مع أي تطبيق

يعرض Android مربع اختيار إذا كان بإمكان عدة تطبيقات التعامل مع Intent.

Implicit Intents الشائعة

شغّل إجراءات النظام باستخدام Implicit Intents:

import android.content.Intent
import android.net.Uri

// Open a web page
val webIntent = Intent(Intent.ACTION_VIEW,
    Uri.parse("https://developer.android.com"))
startActivity(webIntent)

// Dial a phone number
val dialIntent = Intent(Intent.ACTION_DIAL,
    Uri.parse("tel:+15551234567"))
startActivity(dialIntent)

// Share text
val shareIntent = Intent(Intent.ACTION_SEND).apply {
    type = "text/plain"
    putExtra(Intent.EXTRA_TEXT, "Check out this app!")
}
startActivity(Intent.createChooser(shareIntent, "Share via"))

استرداد النتائج

عندما تحتاج إلى نتيجة من شاشة أخرى (مثل منتقي الصور أو نموذج)، استخدم Activity Result API:

  • سجّل مشغّلًا باستخدام registerForActivityResult
  • شغّله عند الحاجة
  • تعامل مع النتيجة في callback

يستبدل هذا النمط القديم startActivityForResult / onActivityResult.

مثال على Result API

اطلب صورة من المعرض واستلمها:

import androidx.activity.result.contract.ActivityResultContracts

class MainActivity : AppCompatActivity() {

    private val pickImage = registerForActivityResult(
        ActivityResultContracts.GetContent()
    ) { uri ->
        // 'uri' is the selected image URI, or null if cancelled
        if (uri != null) {
            binding.ivPhoto.setImageURI(uri)
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // ...
        binding.btnPickPhoto.setOnClickListener {
            pickImage.launch("image/*")
        }
    }
}

الروابط العميقة

إن deep link عنوان URL يفتح شاشة محددة في تطبيقك مباشرةً — وهو مفيد للإشعارات الفورية وروابط التسويق.

صرّح عن الروابط العميقة في AndroidManifest.xml باستخدام intent-filter مع وسم data الذي يحدد مخطط عنوان URL والمضيف.

اختبار سريع

ما نوع Intent الذي ستستخدمه لفتح موقع ويب في متصفح المستخدم؟

مراجعة: Intents والتنقل

يمكنك الآن التنقل بين الشاشات وتشغيل ميزات النظام:

  • Explicit Intent — تشغيل Activity محدد في تطبيقك
  • putExtra / getExtra — تمرير البيانات بين Activities
  • Implicit Intent — فتح عناوين URL والاتصال بالأرقام ومشاركة المحتوى
  • Activity Result API — استلام البيانات من Activity آخر

التالي: عرض القوائم الديناميكية باستخدام RecyclerView.

الأسئلة الشائعة

هل درس «النوايا والتنقّل» مجاني؟

نعم — نص درس «النوايا والتنقّل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Android Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Android Academy 7 دروس في المجموع.

ماذا ستتعلم في «النوايا والتنقّل»؟

تنقّل بين Activities باستخدام Intents صريحة، ومرّر البيانات باستخدام putExtra/getExtra، وشغّل التطبيقات الخارجية باستخدام Intents ضمنية. تتمرن على Android Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Android Academy؟

لا تُشترط خبرة سابقة. Android Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 5 من أصل 7.

كم من الوقت يستغرق درس «النوايا والتنقّل»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Android Academy هذا؟

نعم. كل درس في Android Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. بنية المشروع وملف البيان
  2. الأنشطة ودورة الحياة
  3. التخطيطات وطرق العرض
  4. معالجة إدخال المستخدم
  5. النوايا والتنقّل
  6. الأجزاء
  7. الأذونات وطلبات وقت التشغيل
← العودة إلى Android Academy