تكرار السؤال: …
الإجابة المختصرة
الـ Explicit يحدد المكون المستهدف بالاسم الصريح داخل التطبيق، بينما الـ Implicit يعلن عن الإجراء المطلوب (Action) ليقوم النظام باختيار التطبيق المناسب.
الشرح
يُستخدم Explicit Intent للتنقل الداخلي بين أنشطة التطبيق (Activities) وخدماته بكتابة الكلاس المستهدف مباشرة. أما Implicit Intent فيصف عملية عامة مثل فتح رابط ويب (ACTION_VIEW) أو التقاط صورة أو إرسال بريد؛ يقوم نظام أندرويد بمطابقة هذا الطلب مع الـ Intent Filters المسجلة في الـ Manifest لجميع التطبيقات وتخيير المستخدم.
مثال بالكود
// Explicit Intent
val internalIntent = Intent(context, ProfileActivity::class.java)
startActivity(internalIntent)
// Implicit Intent
val webIntent = Intent(Intent.ACTION_VIEW, Uri.parse("https://developer.android.com"))
if (webIntent.resolveActivity(packageManager) != null) {
startActivity(webIntent)
}أخطاء شائعة
- استدعاء startActivity مع Implicit Intent دون التحقق من وجود تطبيق قادر على التعامل معه، مما يؤدي إلى ActivityNotFoundException.