الأغراض الشائعة 2

الإعلانات

الأغراض الشائعة 2

 

 

الأغراض الشائعة

 

البريد الإلكتروني


إنشاء رسالة بريد إلكتروني، تحتوي على مرفقات إختيارية

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

وتضمين تفاصيل البريد الإلكتروني، مثل المستلم والموضوع بإستخدام المفاتيح الإضافية المدرجة أدناه.

الإجراء

ACTION_SENDTO (بدون أي مرفق) أو

ACTION_SEND (لمرفق واحد) أو

ACTION_SEND_MULTIPLE (لمرفقات متعددة)

مخطط بيانات URI

لا شيء

نوع MIME

"text/plain"

"* / *"

الإضافات

Intent.EXTRA_EMAIL

مصفوفة سلسلة لكافة عناوين البريد الإلكتروني للمستلمين “إلى”.

Intent.EXTRA_CC

مصفوفة سلسلة لكافة عناوين البريد الإلكتروني للمستلمين مرئي “CC”.

Intent.EXTRA_BCC

مصفوفة سلسلة لكافة عناوين البريد الإلكتروني للمستلمين مخفي “BCC”.

Intent.EXTRA_SUBJECT

سلسلة مع موضوع البريد الإلكتروني.

Intent.EXTRA_TEXT

سلسلة مع نص الرسالة الإلكترونية.

Intent.EXTRA_STREAM

هو Uri يشير إلى المرفق. في حالة إستخدام الإجراء ACTION_SEND_MULTIPLE ، يجب أن يكون هذا عبارة عن “قائمة مصفوفه” ArrayList تحتوي على كائنات Uri متعددة.

مثال على الغرض:

KOTLIN

fun composeEmail(addresses: Array<String>, subject: String, attachment: Uri) {
    val intent = Intent(Intent.ACTION_SEND).apply {
        type = "*/*"
        putExtra(Intent.EXTRA_EMAIL, addresses)
        putExtra(Intent.EXTRA_SUBJECT, subject)
        putExtra(Intent.EXTRA_STREAM, attachment)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

JAVA

public void composeEmail(String[] addresses, String subject, Uri attachment) {
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("*/*");
    intent.putExtra(Intent.EXTRA_EMAIL, addresses);
    intent.putExtra(Intent.EXTRA_SUBJECT, subject);
    intent.putExtra(Intent.EXTRA_STREAM, attachment);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

 

إذا كنت تريد التأكد من أنه يتم التعامل مع غرضك فقط، من خلال تطبيق البريد الإلكتروني (وليس تطبيقات رسائل نصية أو تطبيقات إجتماعية أخرى)..

فإستخدم الإجراء ACTION_SENDTO وقم بتضمين نظام البيانات “:mailto“. مثال:

KOTLIN

fun composeEmail(addresses: Array<String>, subject: String) {
    val intent = Intent(Intent.ACTION_SENDTO).apply {
        data = Uri.parse("mailto:") // only email apps should handle this
        putExtra(Intent.EXTRA_EMAIL, addresses)
        putExtra(Intent.EXTRA_SUBJECT, subject)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

JAVA

public void composeEmail(String[] addresses, String subject) {
    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setData(Uri.parse("mailto:")); // only email apps should handle this
    intent.putExtra(Intent.EXTRA_EMAIL, addresses);
    intent.putExtra(Intent.EXTRA_SUBJECT, subject);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

مثال على مرشح الغرض:

<activity ...>
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <data android:type="*/*" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.SENDTO" />
        <data android:scheme="mailto" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

 

 

 

 

تخزين الملفات


إستيراد نوع معين من الملفات

للطلب من المستخدم أن يحدد ملفًا، مثل مستند أو صورة، وإرجاع مرجع إلى تطبيقك، إستخدم الإجراء ACTION_GET_CONTENT ..

وحدد نوع MIME الذي تريده. مرجع الملف الذي تم إرجاعه إلى تطبيقك هو إرجاع مؤقت إلى دورة حياة نشاطك الحالية..

لذا إذا أردت الدخول إليه لاحقاً، فيجب عليك إستيراد نسخة يمكنك قراءتها لاحقاً. يسمح هذا الغرض أيضاً للمستخدم..

بإنشاء ملف جديد في العملية (على سبيل المثال، بدلاً من تحديد صورة موجودة، يمكن للمستخدم إلتقاط صورة جديدة بالكاميرا).

الغرض النتيجة، الذي يتم تسليمه إلى دالة ()onActivityResult يحتوي على بيانات مع URI يشير إلى الملف.

يمكن أن يكون URI أي شيء، مثل http: URI أو file: URI أو content: URI.

ومع ذلك، إذا كنت ترغب في تقييد الملفات القابلة للتحديد، إلى تلك الملفات التي يمكن الوصول إليها من موفر المحتوى..

(content: URI) والمتوفرة كتدفق ملف بإستخدام ()openFileDescriptor ، يجب عليك إضافة تصنيف CATEGORY_OPENABLE إلى غرضك.

في أندرويد 4.3 (المستوى 18) والإصدارات الأحدث، يمكنك أيضاً السماح للمستخدم بتحديد ملفات متعددة..

عن طريق إضافة EXTRA_ALLOW_MULTIPLE إلى الغرض، مع تعيينه على القيمه “true“.

يمكنك عندها الوصول إلى كل من الملفات المحددة في كائن ClipData التي تم إرجاعها بواسطة ()getClipData .

 

الإجراء

ACTION_GET_CONTENT

مخطط بيانات URI

لا شيء

نوع MIME

نوع MIME المتوافق مع نوع الملف الذي يجب على المستخدم تحديده.

الإضافات

EXTRA_ALLOW_MULTIPLE

قيمه منطقيه تعلن ما إذا كان يمكن للمستخدم تحديد أكثر من ملف واحد في كل مرة.

EXTRA_LOCAL_ONLY

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

التصنيف (إختياري)

CATEGORY_OPENABLE

لإرجاع الملفات “القابلة للفتح” فقط، و التي يمكن تمثيلها كتدفق ملف بإستخدام ()openFileDescriptor .

مثال على غرض للحصول على صورة:

KOTLIN

const val REQUEST_IMAGE_GET = 1

fun selectImage() {
    val intent = Intent(Intent.ACTION_GET_CONTENT).apply {
        type = "image/*"
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivityForResult(intent, REQUEST_IMAGE_GET)
    }
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    if (requestCode == REQUEST_IMAGE_GET && resultCode == Activity.RESULT_OK) {
        val thumbnail: Bitmap = data.getParcelableExtra("data")
        val fullPhotoUri: Uri = data.data
        // Do work with photo saved at fullPhotoUri
        ...
    }
}

JAVA

static final int REQUEST_IMAGE_GET = 1;

public void selectImage() {
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("image/*");
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(intent, REQUEST_IMAGE_GET);
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_GET && resultCode == RESULT_OK) {
        Bitmap thumbnail = data.getParcelable("data");
        Uri fullPhotoUri = data.getData();
        // Do work with photo saved at fullPhotoUri
        ...
    }
}

مثال على مرشح غرض لإرجاع صورة:

<activity ...>
    <intent-filter>
        <action android:name="android.intent.action.GET_CONTENT" />
        <data android:type="image/*" />
        <category android:name="android.intent.category.DEFAULT" />
        <!-- The OPENABLE category declares that the returned file is accessible
             from a content provider that supports OpenableColumns
             and ContentResolver.openFileDescriptor() -->
        <category android:name="android.intent.category.OPENABLE" />
    </intent-filter>
</activity>

 

 

 

 

 

فتح نوع معين من الملفات

بدلاً من إستيراد نسخة من ملف يجب عليك إستيراده إلى تطبيقك (بإستخدام الإجراء ACTION_GET_CONTENT)..

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

بإستخدام الإجراء ACTION_OPEN_DOCUMENT و تحديد نوع MIME. للسماح أيضاً للمستخدم بإنشاء مستند جديد، والذي يمكن لتطبيقك الكتابة إليه..

إستخدم الإجراء ACTION_CREATE_DOCUMENT بدلاً من ذلك. مثال، بدلاً من الإختيار من مستندات PDF موجودة..

يتيح الغرض ACTION_CREATE_DOCUMENT للمستخدمين، تحديد المكان الذي يرغبون في إنشاء مستند جديد فيه..

(ضمن تطبيق آخر يدير تخزين المستندات) – يتلقى تطبيقك بعد ذلك موقع URI حيث يمكنه كتابة المستند الجديد.

في حين أن الغرض، الذي تم تسليمه إلى داله ()onActivityResult الخاصة بك، من الإجراء ACTION_GET_CONTENT..

قد ترجع URI من أي نوع، فإن الغرض النتيجة من ACTION_OPEN_DOCUMENT و ACTION_CREATE_DOCUMENT..

يحددان دائماً الملف المختار كـ content: URI المدعوم من قبل DocumentsProvider.

يمكنك فتح الملف بإستخدام ()openFileDescriptor والإستعلام عن تفاصيله بإستخدام الأعمدة من DocumentsContract.Document.

يمنح عنوان URI الذي تم إرجاعه إلى التطبيق، إمكانية الوصول للقراءة، على الملف على المدى البعيد..

(ربما أيضاً مع إمكانية الوصول للكتابة). وبالتالي، يعد الإجراء ACTION_OPEN_DOCUMENT مفيداً بشكلٍ خاص..

(بدلاً من إستخدام ACTION_GET_CONTENT) عندما تريد قراءة ملف حالي، بدون إنشاء نسخة في تطبيقك، أو عندما تريد فتح ملف وتعديله في مكانه.

يمكنك أيضاً السماح للمستخدم، بتحديد ملفات متعددة عن طريق إضافة EXTRA_ALLOW_MULTIPLE إلى الغرض..

والتعيين على القيمه true. إذا قام المستخدم بتحديد عنصر واحد فقط، يمكنك إستيراد العنصر من ()getData .

إذا حدد المستخدم أكثر من عنصر واحد، فإن ()getData تقوم بإرجاع نتيجه فارغة، ويجب عليك بدلاً من ذلك..

إستيراد كل عنصر من كائن ClipData التي يتم إرجاعها بواسطة ()getClipData .

ملاحظة: يجب أن يحدد غرضك، نوع MIME ويجب أن تقوم بإعلان التصنيف CATEGORY_OPENABLE. إذا كان ذلك مناسباً..

يمكنك تحديد أكثر من نوع MIME بإضافة مصفوفة من أنواع MIME بإستخدام الإضافه EXTRA_MIME_TYPES

إذا قمت بذلك، يجب عليك تعيين نوع MIME الأساسي في دالة ()setType إلى “* / *”.

 

الإجراء

ACTION_OPEN_DOCUMENT أو

ACTION_CREATE_DOCUMENT

مخطط بيانات URI

لا شيء

نوع MIME

نوع MIME المطابق لنوع الملف، الذي يجب على المستخدم تحديده.

الإضافات

EXTRA_MIME_TYPES

مصفوفة من أنواع MIME تطابق أنواع الملفات، التي يطلبها تطبيقك. عند إستخدام هذه الإضافه، يجب عليك تعيين نوع MIME الأساسي في دالة ()setType إلى “* / *”.

EXTRA_ALLOW_MULTIPLE

قيمة منطقية توضح ما إذا كان المستخدم يمكنه تحديد أكثر من ملف واحد في كل مرة أم لا.

EXTRA_TITLE

للإستخدام مع ACTION_CREATE_DOCUMENT لتحديد اسم ملف أولي.

EXTRA_LOCAL_ONLY

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

التصنيف

CATEGORY_OPENABLE

لإرجاع الملفات “القابلة للفتح” فقط، والتي يمكن تمثيلها كتدفق ملف، بإستخدام ()openFileDescriptor .

مثال على غرض للحصول على صورة:

KOTLIN

const val REQUEST_IMAGE_OPEN = 1

fun selectImage2() {
    val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
        type = "image/*"
        addCategory(Intent.CATEGORY_OPENABLE)
    }
    // Only the system receives the ACTION_OPEN_DOCUMENT, so no need to test.
    startActivityForResult(intent, REQUEST_IMAGE_OPEN)
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    if (requestCode == REQUEST_IMAGE_OPEN && resultCode == Activity.RESULT_OK) {
        val fullPhotoUri: Uri = data.data
        // Do work with full size photo saved at fullPhotoUri
        ...
    }
}

JAVA

static final int REQUEST_IMAGE_OPEN = 1;

public void selectImage() {
    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
    intent.setType("image/*");
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    // Only the system receives the ACTION_OPEN_DOCUMENT, so no need to test.
    startActivityForResult(intent, REQUEST_IMAGE_OPEN);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_OPEN && resultCode == RESULT_OK) {
        Uri fullPhotoUri = data.getData();
        // Do work with full size photo saved at fullPhotoUri
        ...
    }
}

 

لا يمكن لتطبيقات الجهات الخارجية، الإستجابة فعلياً لأي غرض، من خلال إجراء ACTION_OPEN_DOCUMENT.

بدلاً من ذلك، يتلقى النظام هذا الغرض، ويعرض جميع الملفات المتاحة، من تطبيقات متنوعة، في واجهة مستخدم موحدة.

لتوفير ملفات تطبيقك، في واجهة المستخدم هذه، والسماح لتطبيقات أخرى بفتحها، يجب عليك تنفيذ DocumentProvider ..

وإدراج مرشح غرض لـ PROVIDER_INTERFACE

("android.content.action.DOCUMENTS_PROVIDER"). مثال:

<provider ...
    android:grantUriPermissions="true"
    android:exported="true"
    android:permission="android.permission.MANAGE_DOCUMENTS">
    <intent-filter>
        <action android:name="android.content.action.DOCUMENTS_PROVIDER" />
    </intent-filter>
</provider>

 

لمزيد من المعلومات حول كيفية جعل الملفات التي يديرها تطبيقك، قابلة للفتح من التطبيقات الأخرى..

اقرأ دليل “إطار عمل الوصول إلى التخزين” Framework Access Storage.

 

 

 

 

الإجراءات المحلية


طلب سيارة

إجراءات قوقل الصوتيه
  • “أحضر لي سيارة أجرة”
  • “أطلب لي سيارة”

      (أنظمة الساعات فقط)

 

 

لطلب سيارة أجرة، إستخدم الإجراء ACTION_RESERVE_TAXI_RESERVATION.

ملاحظة: يجب أن تطلب التطبيقات تأكيداً من المستخدم قبل إكمال الإجراء.

الإجراء

ACTION_RESERVE_TAXI_RESERVATION

بيانات URI

لا شيء

نوع MIME

لا شيء

الإضافات

لا شيء

مثال على الغرض:

KOTLIN

fun callCar() {
    val intent = Intent(ReserveIntents.ACTION_RESERVE_TAXI_RESERVATION)
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

JAVA

public void callCar() {
    Intent intent = new Intent(ReserveIntents.ACTION_RESERVE_TAXI_RESERVATION);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

مثال على مرشح الغرض:

<activity ...>
    <intent-filter>
        <action android:name="com.google.android.gms.actions.RESERVE_TAXI_RESERVATION" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

 

 

 

 

الخرائط


عرض موقع على الخريطة

لفتح خريطة، إستخدم الإجراء ACTION_VIEW وحدد معلومات الموقع، في بيانات الغرض، بإستخدام أحد الأنظمة المحددة أدناه.

الإجراء

ACTION_VIEW

مخطط بيانات URI

الجغرافية: خطوط الطول والعرض
geo:latitude,longitude

يعرض الخريطة على خط الطول وخط العرض المعطيين.
مثال: "geo: 47.6 ، -122.3"

geo:latitude,longitude?z=zoom
الجغرافية: خطوط العرض والطول ت = التكبير

يعرض الخريطة على خط الطول والعرض المحددين، عند مستوى تكبير معين.

يوضح مستوى التكبير 1 الأرض بالكامل، مركزاً على خط العرض والطول المعطيين. أعلى مستوى (أقرب) تكبير هو 23.

مثال:

(geo:0,0?q=lat,lng(label

الجغرافية: 0،0 س = خطوط الطول، والعرض (المسمى)

يعرض الخريطة على خط الطول وخط العرض المحددين، بإستخدام مسمى سلسلة.
مثال:

geo:0,0?q=my+street+address

الجغرافية: 0،0 س = الشارع + + عنوان

يعرض موقع “عنوان الشارع الخاص بي” (قد يكون عنوان محدد أو إستعلام عن الموقع).

مثال:

ملاحظة: يجب تشفير “كتابتها في الكود” كل السلاسل، التي تم تمريرها في عنوان URI الجغرافي.

مثال، يجب أن تصبح السلسلة 1st & Pike, Seattle كالتالي
1st%20%26%20Pike%2C%20Seattle.

يمكن تشفير المسافات في السلسلة بـ20% أو إستبدالها بعلامة الجمع (+).

نوع MIME

لا شيء

مثال على الغرض:

KOTLIN

fun showMap(geoLocation: Uri) {
    val intent = Intent(Intent.ACTION_VIEW).apply {
        data = geoLocation
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

JAVA

public void showMap(Uri geoLocation) {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(geoLocation);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

مثال على مرشح الغرض:

<activity ...>
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <data android:scheme="geo" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

 

 

 

 

 

الموسيقى أو الفيديو


تشغيل ملف وسائط

لتشغيل ملف موسيقى، إستخدم الإجراء ACTION_VIEW وحدد موقع URI للملف، في بيانات الغرض.

الإجراء

ACTION_VIEW

مخطط بيانات URI

<file:<URI
<content:<URI
<http:<URL

نوع MIME

"*/audio"
"application/ogg"
"application/x-ogg"
"application/itunes"

أو أي شيء آخر قد يتطلبه تطبيقك.

 

مثال على الغرض:

KOTLIN

fun playMedia(file: Uri) {
    val intent = Intent(Intent.ACTION_VIEW).apply {
        data = file
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

JAVA

public void playMedia(Uri file) {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(file);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

مثال على مرشح الغرض:

<activity ...>
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <data android:type="audio/*" />
        <data android:type="application/ogg" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

 

 

 

 

تشغيل الموسيقى إستناداً إلى إستعلام البحث
 

إجراءات قوقل الصوتيه
  • “شغل أغنية مايكل جاكسون (بيلي جان)”

لتشغيل الموسيقى إستناداً إلى إستعلام البحث، إستخدم الغرض INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH.

قد يطلق أحد التطبيقات هذا الغرض، إستجابةً للأمر الصوتي الخاص بالمستخدم، لتشغيل الموسيقى.

يقوم التطبيق المستلم لهذا الغرض، بإجراء بحث بداخل مخزونه، لمطابقة المحتوى الموجود بالإستعلام المحدد، ومن ثم بدء تشغيل هذا المحتوى.

يجب أن يحتوي هذا الغرض على السلسله الإضافيه EXTRA_MEDIA_FOCUS، والتي تحدد أسلوب البحث المراد.

على سبيل المثال، يمكن أن يحدد أسلوب البحث، ما إذا كان البحث عن اسم فنان أو اسم أغنية.

الإجراء

INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH

مخطط بيانات URI

لا شيء

نوع MIME

لا شيء

الإضافات

MediaStore.EXTRA_MEDIA_FOCUS (مطلوبه)

تشير إلى أسلوب البحث (سواء كان المستخدم يبحث عن فنان معين أو ألبوم أو أغنية أو قائمة تشغيل).

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

عنوان الأغنية، الفنان، والألبوم. هذا الغرض يدعم أوضاع البحث التالية لكل قيمة من قيم EXTRA_MEDIA_FOCUS:

أي – "*/vnd.android.cursor.item "

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

إضافات إضافية:

  • QUERY (مطلوبه) – سلسلة فارغة. يتم توفير هذه الإضافة الإضافية دائماً، للتوافق مع الإصدارات السابقة:

يمكن للتطبيقات الحالية التي لا تعرف أساليب البحث، أن تقوم بالتعامل مع هذا الغرض بإعتباره بحثاً غير منظم.

 

غير منظم"*/vnd.android.cursor.item"

تشغيل أغنية أو ألبوم أو نوع معين، من إستعلام البحث الغير منظم. قد تقوم التطبيقات بإنشاء غرض، بإستخدام أسلوب البحث هذا..

عندما لا تتمكن من تحديد نوع المحتوى الذي يريد المستخدم الإستماع إليه. يجب أن تستخدم التطبيقات أساليب بحث أكثر تحديداً كلما أمكن.

إضافات إضافية:

  • QUERY (مطلوبه) – سلسلة تحتوي على أي مجموعة من: الفنان أو الألبوم أو اسم الأغنية أو النوع.

النوعAudio.Genres.ENTRY_CONTENT_TYPE

لتشغيل موسيقى من نوع معين.

إضافات إضافية:

  • "android.intent.extra.genre" (مطلوبه) – النوع.
  • QUERY (مطلوبه) – النوع. يتم توفير هذه الإضافه دائماً، للتوافق مع الإصدارات السابقة: يمكن للتطبيقات الحالية..

التي لا تعرف أساليب البحث، التعامل مع هذا الغرض بإعتباره بحثاً غير منظم.

 

فنانAudio.Artists.ENTRY_CONTENT_TYPE

تشغيل الموسيقى لفنان معين.

إضافات إضافية:

  • EXTRA_MEDIA_ARTIST (مطلوبه) – الفنان.
  • "android.intent.extra.genre" – النوع.
  • QUERY (مطلوبه) – سلسلة تحتوي على أي مجموعة من: الفنان أو النوع.

يتم توفير هذه الإضافة دائماً للتوافق مع الإصدارات السابقة: يمكن للتطبيقات الحالية التي لا تعرف أساليب البحث، التعامل مع هذا الغرض بإعتباره بحثاً غير منظم.

ألبومAudio.Albums.ENTRY_CONTENT_TYPE

تشغيل الموسيقى من ألبوم معين.

إضافات إضافية:

  • EXTRA_MEDIA_ALBUM (مطلوبه) – الألبوم.
  • EXTRA_MEDIA_ARTIST – الفنان.
  • "android.intent.extra.genre" – النوع.
  • QUERY (مطلوبه) – سلسلة تحتوي على أي مجموعة من: الألبوم أو الفنان.

يتم توفير هذه الإضافة دائماً للتوافق مع الإصدارات السابقة: يمكن للتطبيقات الحالية التي لا تعرف أساليب البحث، التعامل مع هذا الغرض بإعتباره بحثاً غير منظم.

أغنية"vnd.android.cursor.item /audio"

تشغيل أغنية معينة.

إضافات إضافية:

  • EXTRA_MEDIA_ALBUM – الألبوم.
  • EXTRA_MEDIA_ARTIST – الفنان.
  • "android.intent.extra.genre" – النوع.
  • EXTRA_MEDIA_TITLE (مطلوب) – اسم الأغنية.
  • QUERY (مطلوبه) – سلسلة تحتوي على أي مجموعة من: الألبوم أو الفنان أو النوع أو العنوان.

يتم توفير هذه الإضافة دائماً للتوافق مع الإصدارات السابقة: يمكن للتطبيقات الحالية التي لا تعرف أساليب البحث، التعامل مع هذا الغرض بإعتباره بحثاً غير منظم.

 

 

قائمة التشغيلAudio.Playlists.ENTRY_CONTENT_TYPE

تشغيل قائمة تشغيل معينة، أو قائمة تشغيل تطابق بعض المعايير المحددة، بواسطة الإضافات الإضافية.

إضافات إضافية:

  • EXTRA_MEDIA_ALBUM – الألبوم.
  • EXTRA_MEDIA_ARTIST – الفنان.
  • "android.intent.extra.genre" – النوع.
  • "android.intent.extra.playlist" – قائمة التشغيل.
  • EXTRA_MEDIA_TITLE – اسم الأغنية الذي تستند إليه قائمة التشغيل.
  • QUERY (مطلوبه) – سلسلة تحتوي على أي مجموعة من: الألبوم أو الفنان أو النوع أو قائمة التشغيل أو العنوان.

يتم توفير هذه الإضافة دائماً للتوافق مع الإصدارات السابقة: يمكن للتطبيقات الحالية التي لا تعرف أساليب البحث، التعامل مع هذا الغرض بإعتباره بحثاً غير منظم.

مثال على الغرض:

إذا أراد المستخدم الإستماع إلى موسيقى، لفنان معين، فقد ينشئ تطبيق البحث الغرض التالي:

KOTLIN

fun playSearchArtist(artist: String) {
    val intent = Intent(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH).apply {
        putExtra(MediaStore.EXTRA_MEDIA_FOCUS, MediaStore.Audio.Artists.ENTRY_CONTENT_TYPE)
        putExtra(MediaStore.EXTRA_MEDIA_ARTIST, artist)
        putExtra(SearchManager.QUERY, artist)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

JAVA

public void playSearchArtist(String artist) {
    Intent intent = new Intent(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH);
    intent.putExtra(MediaStore.EXTRA_MEDIA_FOCUS,
                    MediaStore.Audio.Artists.ENTRY_CONTENT_TYPE);
    intent.putExtra(MediaStore.EXTRA_MEDIA_ARTIST, artist);
    intent.putExtra(SearchManager.QUERY, artist);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

مثال على مرشح الغرض:

<activity ...>
    <intent-filter>
        <action android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

عند التعامل مع هذا الغرض، يجب أن يتحقق نشاطك من قيمة الإضافه EXTRA_MEDIA_FOCUS في الغرض الوارد، لتحديد أسلوب البحث.

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

بإستخدام هذه المعلومات، يمكن للتطبيق عندئذٍ إجراء البحث، بداخل مخزونه، لتشغيل المحتوى الذي يطابق طلب البحث. مثال:

KOTLIN

override fun onCreate(savedInstanceState: Bundle?) {
    ...
    if (intent.action.compareTo(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH) == 0) {

        val mediaFocus: String? = intent.getStringExtra(MediaStore.EXTRA_MEDIA_FOCUS)
        val query: String? = intent.getStringExtra(SearchManager.QUERY)

        // Some of these extras may not be available depending on the search mode
        val album: String? = intent.getStringExtra(MediaStore.EXTRA_MEDIA_ALBUM)
        val artist: String? = intent.getStringExtra(MediaStore.EXTRA_MEDIA_ARTIST)
        val genre: String? = intent.getStringExtra("android.intent.extra.genre")
        val playlist: String? = intent.getStringExtra("android.intent.extra.playlist")
        val title: String? = intent.getStringExtra(MediaStore.EXTRA_MEDIA_TITLE)

        // Determine the search mode and use the corresponding extras
        when {
            mediaFocus == null -> {
                // 'Unstructured' search mode (backward compatible)
                playUnstructuredSearch(query)
            }
            mediaFocus.compareTo("vnd.android.cursor.item/*") == 0 -> {
                if (query?.isNotEmpty() == true) {
                    // 'Unstructured' search mode
                    playUnstructuredSearch(query)
                } else {
                    // 'Any' search mode
                    playResumeLastPlaylist()
                }
            }
            mediaFocus.compareTo(MediaStore.Audio.Genres.ENTRY_CONTENT_TYPE) == 0 -> {
                // 'Genre' search mode
                playGenre(genre)
            }
            mediaFocus.compareTo(MediaStore.Audio.Artists.ENTRY_CONTENT_TYPE) == 0 -> {
                // 'Artist' search mode
                playArtist(artist, genre)
            }
            mediaFocus.compareTo(MediaStore.Audio.Albums.ENTRY_CONTENT_TYPE) == 0 -> {
                // 'Album' search mode
                playAlbum(album, artist)
            }
            mediaFocus.compareTo("vnd.android.cursor.item/audio") == 0 -> {
                // 'Song' search mode
                playSong(album, artist, genre, title)
            }
            mediaFocus.compareTo(MediaStore.Audio.Playlists.ENTRY_CONTENT_TYPE) == 0 -> {
                // 'Playlist' search mode
                playPlaylist(album, artist, genre, playlist, title)
            }
        }
    }
}

JAVA

protected void onCreate(Bundle savedInstanceState) {
    //...
    Intent intent = this.getIntent();
    if (intent.getAction().compareTo(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH) == 0) {

        String mediaFocus = intent.getStringExtra(MediaStore.EXTRA_MEDIA_FOCUS);
        String query = intent.getStringExtra(SearchManager.QUERY);

        // Some of these extras may not be available depending on the search mode
        String album = intent.getStringExtra(MediaStore.EXTRA_MEDIA_ALBUM);
        String artist = intent.getStringExtra(MediaStore.EXTRA_MEDIA_ARTIST);
        String genre = intent.getStringExtra("android.intent.extra.genre");
        String playlist = intent.getStringExtra("android.intent.extra.playlist");
        String title = intent.getStringExtra(MediaStore.EXTRA_MEDIA_TITLE);

        // Determine the search mode and use the corresponding extras
        if (mediaFocus == null) {
            // 'Unstructured' search mode (backward compatible)
            playUnstructuredSearch(query);

        } else if (mediaFocus.compareTo("vnd.android.cursor.item/*") == 0) {
            if (query.isEmpty()) {
                // 'Any' search mode
                playResumeLastPlaylist();
            } else {
                // 'Unstructured' search mode
                playUnstructuredSearch(query);
            }

        } else if (mediaFocus.compareTo(MediaStore.Audio.Genres.ENTRY_CONTENT_TYPE) == 0) {
            // 'Genre' search mode
            playGenre(genre);

        } else if (mediaFocus.compareTo(MediaStore.Audio.Artists.ENTRY_CONTENT_TYPE) == 0) {
            // 'Artist' search mode
            playArtist(artist, genre);

        } else if (mediaFocus.compareTo(MediaStore.Audio.Albums.ENTRY_CONTENT_TYPE) == 0) {
            // 'Album' search mode
            playAlbum(album, artist);

        } else if (mediaFocus.compareTo("vnd.android.cursor.item/audio") == 0) {
            // 'Song' search mode
            playSong(album, artist, genre, title);

        } else if (mediaFocus.compareTo(MediaStore.Audio.Playlists.ENTRY_CONTENT_TYPE) == 0) {
            // 'Playlist' search mode
            playPlaylist(album, artist, genre, playlist, title);
        }
    }
}

 

 

 

 

الأغراض الشائعة

 

ملاحظة جديدة


إنشاء ملاحظة

لإنشاء ملاحظة جديدة، إستخدم الإجراء ACTION_CREATE_NOTE وحدد تفاصيل الملاحظة مثل الموضوع والنص، بإستخدام الإضافات المحددة أدناه.

ملاحظة: يجب أن تطلب التطبيقات تأكيداً من المستخدم قبل إكمال الإجراء.

 

الإجراء

ACTION_CREATE_NOTE

مخطط بيانات URI

لا شيء

نوع MIME

PLAIN_TEXT_TYPE

“* / *”

الإضافات

EXTRA_NAME

سلسلة تشير إلى عنوان أو موضوع الملاحظة.

EXTRA_TEXT

سلسلة تشير إلى نص الملاحظة.

مثال على الغرض:

KOTLIN

fun createNote(subject: String, text: String) {
    val intent = Intent(NoteIntents.ACTION_CREATE_NOTE).apply {
        putExtra(NoteIntents.EXTRA_NAME, subject)
        putExtra(NoteIntents.EXTRA_TEXT, text)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

JAVA

public void createNote(String subject, String text) {
    Intent intent = new Intent(NoteIntents.ACTION_CREATE_NOTE)
            .putExtra(NoteIntents.EXTRA_NAME, subject)
            .putExtra(NoteIntents.EXTRA_TEXT, text);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

مثال على مرشح الغرض:

<activity ...>
    <intent-filter>
        <action android:name="com.google.android.gms.actions.CREATE_NOTE" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="*/*" />
    </intent-filter>
</activity>

 

 

 

 

 

 

الأغراض الشائعة

الهاتف


بدء مكالمة هاتفية

لفتح تطبيق الهاتف وطلب رقم هاتف، إستخدم الإجراء ACTION_DIAL وحدد رقم هاتف بإستخدام مخطط URI المحدد أدناه.

عندما يفتح تطبيق الهاتف، يقوم بعرض رقم الهاتف، ولكن يجب على المستخدم الضغط على زر الإتصال لبدء الإتصال الهاتفي.

 

إجراءات قوقل الصوتيه
  • “أتصل على 555-5555”
  • “أتصل على بوب”
  • “مكالمة صوتيه”

لإجراء مكالمة هاتفية مباشرة، إستخدم الإجراء ACTION_CALL وحدد رقم هاتف بإستخدام مخطط URI المحدد أدناه.

عندما يفتح تطبيق الهاتف، يبدأ المكالمة الهاتفية؛ لا يحتاج المستخدم إلى الضغط على زر الإتصال.

يتطلب إجراء ACTION_CALL إضافة الإذن CALL_PHONE إلى ملف الإيضاح الخاص بك:

<uses-permission android:name="android.permission.CALL_PHONE" />

 

الإجراء

  • ACTION_DIAL – يفتح برنامج الإتصال أو تطبيق الهاتف.
  • ACTION_CALL – لطلب مكالمة هاتفية (يتطلب الحصول على إذن CALL_PHONE)

مخطط بيانات URI

  • <tel:<phone-number
  • <voicemail:<phone-number

نوع MIME

لا شيء

أرقام الهواتف الصالحة هي تلك المحددة في IETF RFC 3966.

تتضمن الأمثلة الصالحة ما يلي:

  • هاتف: 2125551212
  • هاتف: (212) 555 1212

طالب الهاتف، جيد في خطط التسويه، مثل أرقام الهاتف.

لذلك فإن المخطط الموضح، غير مطلوب بشكلٍ دقيق في دالة ()Uri.parse .

ومع ذلك، إذا لم تجرب نظاماً أو كنت غير متأكد من إمكانية التعامل معه، إستخدم دالة ()Uri.fromParts بدلاً من ذلك.

 

مثال على الغرض:

KOTLIN

fun dialPhoneNumber(phoneNumber: String) {
    val intent = Intent(Intent.ACTION_DIAL).apply {
        data = Uri.parse("tel:$phoneNumber")
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

JAVA

public void dialPhoneNumber(String phoneNumber) {
    Intent intent = new Intent(Intent.ACTION_DIAL);
    intent.setData(Uri.parse("tel:" + phoneNumber));
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

 

 

 

 

 

الأغراض الشائعة

 

البحث


البحث بإستخدام تطبيق معين
 

إجراءات قوقل الصوتيه
  • “أبحث عن مقاطع فيديو للقطط في myvideoapp”

 

لدعم البحث بداخل سياق تطبيقك، قم بإعلان مرشح الغرض في تطبيقك، بإستخدام الإجراء SEARCH_ACTION..

 

كما هو موضح في مثال مرشح الغرض أدناه.

الإجراء

"com.google.android.gms.actions.SEARCH_ACTION"

لدعم إستعلامات البحث من إجراءات قوقل الصوتيه.

الإضافات

QUERY الإستعلام

سلسلة تحتوي على إستعلام البحث.

مثال على مرشح الغرض:

<activity android:name=".SearchActivity">
    <intent-filter>
        <action android:name="com.google.android.gms.actions.SEARCH_ACTION"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

 

 

 

 

 

الأغراض الشائعة

تنفيذ بحث على الويب

لبدء بحث على الويب، إستخدم الإجراء ACTION_WEB_SEARCH وحدد سلسلة البحث في الإضافه SearchManager.QUERY.

الإجراء

ACTION_WEB_SEARCH

مخطط بيانات URI

لا شيء

نوع MIME

لا شيء

الإضافات

SearchManager.QUERY

سلسلة البحث.

مثال على الغرض:
KOTLIN 

fun searchWeb(query: String) {
    val intent = Intent(Intent.ACTION_WEB_SEARCH).apply {
        putExtra(SearchManager.QUERY, query)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

JAVA 

public void searchWeb(String query) {
    Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
    intent.putExtra(SearchManager.QUERY, query);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

 

 

 

 

 

 

الأغراض الشائعة

 

الإعدادات


فتح قسم محدد من الإعدادات

لفتح شاشة في إعدادات النظام، عندما يطلب تطبيقك من المستخدم تغيير شيء ما، إستخدم أحد إجراءات الغرض التالية..

لفتح شاشة الإعدادات الخاصة بأسم الإجراء.

الإجراء

ACTION_SETTINGS

ACTION_WIRELESS_SETTINGS

ACTION_AIRPLANE_MODE_SETTINGS

ACTION_WIFI_SETTINGS

ACTION_APN_SETTINGS

ACTION_BLUETOOTH_SETTINGS

ACTION_DATE_SETTINGS

ACTION_LOCALE_SETTINGS

ACTION_INPUT_METHOD_SETTINGS

ACTION_DISPLAY_SETTINGS

ACTION_SECURITY_SETTINGS

ACTION_LOCATION_SOURCE_SETTINGS

ACTION_INTERNAL_STORAGE_SETTINGS

ACTION_MEMORY_CARD_SETTINGS

راجع وثائق الإعدادات، للحصول على شاشات إعدادات إضافية متاحة.

 

 

مخطط بيانات URI

لا شيء

نوع MIME

لا شيء

مثال على الغرض:

KOTLIN

fun openWifiSettings() {
    val intent = Intent(Settings.ACTION_WIFI_SETTINGS)
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

JAVA

public void openWifiSettings() {
    Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

 

 

 

 

 

 

الأغراض الشائعة

الرسائل النصية


إنشاء رسالة SMS/MMS مع مرفقات

لبدء رسالة نصية قصيرة SMS أو MMS، إستخدم أحد إجراءات الغرض أدناه، وحدد تفاصيل الرسالة مثل:

رقم الهاتف، الموضوع، نص الرسالة بإستخدام المفاتيح الإضافية المدرجة أدناه.

الإجراء

ACTION_SENDTO أو

ACTION_SEND أو

ACTION_SEND_MULTIPLE

 

مخطط بيانات URI

<sms:<phone_number

<smsto:<phone_number

<mms:<phone_number

<mmsto:<phone_number

كل من هذه المخططات يتم التعامل معها بنفس الطريقة.

نوع MIME 

"نص عادي" "text/plain"

"صورة/*" "*/image"

"فيديو/*" "*/video"

 

الإضافات

"الموضوع"

سلسلة لموضوع الرسالة (عادة تستخدم لـ MMS فقط).

"sms_body"

سلسلة للرسالة النصية.

EXTRA_STREAM

يشير Uri إلى الصورة أو الفيديو، المراد إرفاقه. في حالة إستخدام الإجراء ACTION_SEND_MULTIPLE ..

يجب أن تكون هذه الإضافة عبارة عن ArrayList من Uris التي تشير إلى الصور/ مقاطع الفيديو المرفقة.

 

 

مثال على الغرض:
KOTLIN

fun composeMmsMessage(message: String, attachment: Uri) {
    val intent = Intent(Intent.ACTION_SENDTO).apply {
        type = HTTP.PLAIN_TEXT_TYPE
        putExtra("sms_body", message)
        putExtra(Intent.EXTRA_STREAM, attachment)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

JAVA

public void composeMmsMessage(String message, Uri attachment) {
    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setType(HTTP.PLAIN_TEXT_TYPE);
    intent.putExtra("sms_body", message);
    intent.putExtra(Intent.EXTRA_STREAM, attachment);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

 

إذا كنت تريد التأكد من أنه يتم التعامل مع غرضك فقط، من خلال تطبيق للرسائل النصية (وليس البريد الإلكتروني أو التطبيقات الإجتماعية الأخرى)..

فإستخدم الإجراء ACTION_SENDTO وقم بتضمين نظام ":smsto" للبيانات. مثال:

KOTLIN

fun composeMmsMessage(message: String, attachment: Uri) {
    val intent = Intent(Intent.ACTION_SEND).apply {
        data = Uri.parse("smsto:")  // This ensures only SMS apps respond
        putExtra("sms_body", message)
        putExtra(Intent.EXTRA_STREAM, attachment)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

JAVA

public void composeMmsMessage(String message, Uri attachment) {
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setData(Uri.parse("smsto:"));  // This ensures only SMS apps respond
    intent.putExtra("sms_body", message);
    intent.putExtra(Intent.EXTRA_STREAM, attachment);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

مثال على مرشح الغرض:

<activity ...>
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <data android:type="text/plain" />
        <data android:type="image/*" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

 

ملاحظة: إذا كنت بصدد تطوير تطبيق مراسلة SMS/MMS، فيجب عليك تنفيذ مرشحات غرض لعدة إجراءات إضافية..

لكي تكون متاحة كتطبيق الرسائل القصيرة الإفتراضي على أندرويد 4.4 والإصدارات الأحدث. لمزيد من المعلومات، راجع وثائق الهاتف.

 

 

 

 

الأغراض الشائعة

 

متصفح الإنترنت


تحميل عنوان URL على الويب

 

إجراءات قوقل الصوتيه
  • “أفتح example.com”

لفتح صفحة ويب، إستخدم إجراء ACTION_VIEW وحدد عنوان URL على الويب في بيانات الغرض.

الإجراء

ACTION_VIEW

مخطط بيانات URI

<http:<URL

<https:<URL

نوع MIME

"text/plain"

"text/html"

"application/xhtml+xml"

"application/vnd.wap.xhtml+xml"

مثال على الغرض:
KOTLIN

fun openWebPage(url: String) {
    val webpage: Uri = Uri.parse(url)
    val intent = Intent(Intent.ACTION_VIEW, webpage)
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

JAVA

public void openWebPage(String url) {
    Uri webpage = Uri.parse(url);
    Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

مثال على مرشح الغرض:

<activity ...>
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <!-- Include the host attribute if you want your app to respond
             only to URLs with your app's domain. -->
        <data android:scheme="http" android:host="www.example.com" />
        <category android:name="android.intent.category.DEFAULT" />
        <!-- The BROWSABLE category is required to get links from web pages. -->
        <category android:name="android.intent.category.BROWSABLE" />
    </intent-filter>
</activity>

 

 

نصيحة: إذا كان تطبيقك الأندرويد، يوفر وظائف مشابهة لموقع الويب الخاص بك، قم بتضمين مرشح غرض لعناوين URL التي تشير إلى موقع الويب الخاص بك.

بعد ذلك، إذا كان المستخدمون قد ثبّتوا تطبيقك، فستؤدي الروابط من الرسائل الإلكترونية أو صفحات الويب الأخرى..

التي تشير إلى موقعك على الويب، إلى فتح تطبيق الاندرويد، بدلاً من صفحة الويب.

 

 

 

 

 

الأغراض الشائعة

 

التحقق من الأغراض بإستخدام مصحح أخطاء اندرويد


للتحقق من أن التطبيق يستجيب إلى الأغراض، التي تريد دعمها، يمكنك إستخدام أداة adb لإطلاق الأغراض المحددة:

1- قم بإعداد جهاز الأندرويد للتطوير، أو إستخدم جهاز ظاهري.

2- ثبّت إصداراً من تطبيقك، الذي يتعامل مع الأغراض التي تريد دعمها.

3- أطلق غرض بإستخدام adb:

adb shell am start -a <ACTION> -t <MIME_TYPE> -d <DATA> \
  -e <EXTRA_NAME> <EXTRA_VALUE> -n <ACTIVITY>

مثال:

adb shell am start -a android.intent.action.DIAL \
  -d tel:555-5555 -n org.example.MyApp/.MyActivity

 

4- إذا حددت مرشحات الغرض المطلوبة، فيجب أن يتعامل تطبيقك مع الغرض.

لمزيد من المعلومات، راجع ADB Shell Commands.

 

راجع أيضاً:

الأغراض الشائعه


للإطلاع على المقال باللغه الإنجليزيه أضغط هنا.

الإعلانات

اترك رد