الأربعاء، 18 أكتوبر 2017

النوايا المشتركة Common Intents

النوايا المشتركة Common Intents



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



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

عند استدعاء startActivity() أو startActivityForResult() وتمريره نية ضمنية، يحل النظام القصد من التطبيق الذي يمكن التعامل مع القصد ويبدأ Activity المقابلة لها. إذا كان هناك أكثر من واحد التطبيق الذي يمكن التعامل مع القصد، ويعرض النظام المستخدم مع الحوار لاختيار التطبيق الذي للاستخدام.

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

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

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

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

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

منبه
إنشاء إنذار

إجراءات غوغل فوايس

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

ملاحظة: ساعة فقط، والدقائق، وإضافات رسالة متوفرة في الروبوت 2.3 (مستوى أبي 9) وأعلى. تمت إضافة الإضافات الأخرى في الإصدارات الأحدث من المنصة.

عمل
ACTION_SET_ALARM
عنوان أوري للبيانات
لا شيء
نوع التمثيل الصامت
لا شيء
إضافات
EXTRA_HOUR
ساعة للتنبيه.
EXTRA_MINUTES
محضر التنبيه.
EXTRA_MESSAGE
رسالة مخصصة لتحديد التنبيه.
EXTRA_DAYS
و ArrayList بما في ذلك كل يوم الأسبوع الذي ينبغي تكرار هذا التنبيه. يجب أن يتم الإعلان عن كل يوم بعدد صحيح من فئة Calendar مثل MONDAY .
لمنبه لمرة واحدة، لا تحدد هذا اضافية.

EXTRA_RINGTONE
content: عنوان أوري يحدد نغمة رنين لاستخدامها مع التنبيه، أو VALUE_RINGTONE_SILENT بدون نغمة رنين.
لاستخدام نغمة الرنين الافتراضية، لا تحدد هذه الإضافة.

EXTRA_VIBRATE
منطقية لتحديد ما إذا كان ليهتز لهذا التنبيه.
EXTRA_SKIP_UI
منطقية تحديد ما إذا كان التطبيق الاستجابة يجب تخطي واجهة المستخدم الخاصة به عند ضبط المنبه. إذا كان صحيحا، يجب على التطبيق تجاوز أي واجهة المستخدم تأكيد وببساطة ضبط المنبه المحدد.
مثال على النية:

public void createAlarm(String message, int hour, int minutes) {
    Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM)
            .putExtra(AlarmClock.EXTRA_MESSAGE, message)
            .putExtra(AlarmClock.EXTRA_HOUR, hour)
            .putExtra(AlarmClock.EXTRA_MINUTES, minutes);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

ملحوظة:
من أجل استدعاء نية ACTION_SET_ALARM ، يجب أن يكون التطبيق الخاص بك إذن SET_ALARM :


<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />


مثال لتصفية النوايا:

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


إنشاء جهاز توقيت

إجراءات غوغل فوايس

"تعيين الموقت لمدة 5 دقائق"
لإنشاء مؤقت للعد التنازلي، استخدم الإجراء ACTION_SET_TIMER وحدد تفاصيل الموقت مثل المدة باستخدام الإضافات المحددة أدناه.

ملاحظة: تمت إضافة هذا القصد في أندرويد 4.4 (مستوى واجهة برمجة التطبيقات 19).

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


public void startTimer(String message, int seconds) {
    Intent intent = new Intent(AlarmClock.ACTION_SET_TIMER)
            .putExtra(AlarmClock.EXTRA_MESSAGE, message)
            .putExtra(AlarmClock.EXTRA_LENGTH, seconds)
            .putExtra(AlarmClock.EXTRA_SKIP_UI, true);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}


ملحوظة:
من أجل استدعاء نية ACTION_SET_TIMER ، يجب أن يحتوي تطبيقك على إذن SET_ALARM :


<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />


مثال لتصفية النوايا:

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


عرض جميع أجهزة الإنذار
لعرض قائمة أجهزة الإنذار، استخدم الإجراء ACTION_SHOW_ALARMS .

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

ملاحظة: تمت إضافة هذا القصد في أندرويد 4.4 (مستوى واجهة برمجة التطبيقات 19).

عمل
ACTION_SHOW_ALARMS
عنوان أوري للبيانات
لا شيء
نوع التمثيل الصامت
لا شيء
مثال لتصفية النوايا:


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

التقويم
إضافة حدث تقويم
لإضافة حدث جديد إلى تقويم المستخدم، استخدم الإجراء ACTION_INSERT وحدد معرف الموارد المنتظم (أوري) للبيانات مع Events.CONTENT_URI . Events.CONTENT_URI . يمكنك بعد ذلك تحديد تفاصيل الحدث المختلفة باستخدام الإضافات المحددة أدناه.

عمل
ACTION_INSERT
عنوان أوري للبيانات
Events.CONTENT_URI
نوع التمثيل الصامت
"vnd.android.cursor.dir/event"
إضافات
EXTRA_EVENT_ALL_DAY
منطقية تحدد ما إذا كان هذا حدث طوال اليوم أم لا.
EXTRA_EVENT_BEGIN_TIME
وقت بدء الحدث (ميلي ثانية منذ العصر).
EXTRA_EVENT_END_TIME
وقت انتهاء الحدث (ميلي ثانية منذ عصر).
TITLE
عنوان الحدث.
DESCRIPTION
وصف الحدث.
EVENT_LOCATION
موقع الحدث.
EXTRA_EMAIL
قائمة مفصولة بفواصل لعناوين البريد الإلكتروني التي تحدد المدعوين.
يمكن تحديد العديد من تفاصيل الحدث أكثر باستخدام الثوابت المحددة في فئة CalendarContract.EventsColumns .

مثال على النية:


public void addEvent(String title, String location, long begin, long end) {
    Intent intent = new Intent(Intent.ACTION_INSERT)
            .setData(Events.CONTENT_URI)
            .putExtra(Events.TITLE, title)
            .putExtra(Events.EVENT_LOCATION, location)
            .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, begin)
            .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}
مثال لتصفية النوايا:

<activity ...>
    <intent-filter>
        <action android:name="android.intent.action.INSERT" />
        <data android:mimeType="vnd.android.cursor.dir/event" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>

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

عمل
ACTION_IMAGE_CAPTURE أو 
ACTION_VIDEO_CAPTURE
مخطط أوري للبيانات
لا شيء
نوع التمثيل الصامت
لا شيء
إضافات
EXTRA_OUTPUT
موقع أوري حيث يجب على تطبيق الكاميرا حفظ الصورة أو ملف الفيديو (ككائن Uri ).
عندما يعيد تطبيق الكاميرا بنجاح التركيز على نشاطك (يتلقى تطبيقك رد onActivityResult() )، يمكنك الوصول إلى الصورة أو الفيديو على عنوان أوري الذي حددته بقيمة EXTRA_OUTPUT .

ملاحظة: عند استخدام ACTION_IMAGE_CAPTURE لالتقاط صورة، قد تقوم الكاميرا أيضا بإرجاع نسخة أقل من الصورة (صورة مصغرة) للصورة في النتيجة Intent ، يتم حفظها كصورة Bitmap في حقل إضافي باسم "data" .

مثال على النية:

static final int REQUEST_IMAGE_CAPTURE = 1;
static final Uri mLocationForPhotos;

public void capturePhoto(String targetFilename) {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT,
            Uri.withAppendedPath(mLocationForPhotos, targetFilename));
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        Bitmap thumbnail = data.getParcelable("data");
        // Do other work with full size photo saved in mLocationForPhotos
        ...
    }
}


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

مثال لتصفية النوايا:

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

عند التعامل مع هذه النية، يجب أن يقوم نشاطك بالبحث عن EXTRA_OUTPUT إكسترا في Intent الواردة، ثم حفظ الصورة أو الفيديو الملتقطة في الموقع المحدد من خلال تلك المكالمة الإضافية و setResult() مع Intent تتضمن صورة مصغرة مضغوطة في اسم إضافي "data" .

بدء تطبيق الكاميرا في وضع الصور الثابتة

إجراءات غوغل فوايس

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

عمل
INTENT_ACTION_STILL_IMAGE_CAMERA
مخطط أوري للبيانات
لا شيء
نوع التمثيل الصامت
لا شيء
إضافات
لا شيء
مثال على النية:
public void capturePhoto() {
    Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(intent);
    }
}
  

مثال لتصفية النوايا:


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


بدء تطبيق الكاميرا في وضع الفيديو

إجراءات غوغل فوايس

"سجل فيديو"
لفتح تطبيق كاميرا في وضع الفيديو، استخدم الإجراء INTENT_ACTION_VIDEO_CAMERA .

عمل
INTENT_ACTION_VIDEO_CAMERA
مخطط أوري للبيانات
لا شيء
نوع التمثيل الصامت
لا شيء
إضافات
لا شيء
مثال على النية:


public void capturePhoto() {
    Intent intent = new Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(intent);
    }
}
مثال لتصفية النوايا:

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


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

النتيجة Intent تسليمها إلى onActivityResult() رد الاتصال يحتوي على content: أوري مشيرا إلى جهة الاتصال المحددة. تمنح الاستجابة أذونات مؤقتة للتطبيق لقراءة جهة الاتصال هذه باستخدام واجهة برمجة تطبيقات مزود جهات الاتصال حتى إذا لم يتضمن READ_CONTACTS إذن READ_CONTACTS .

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

عمل
ACTION_PICK
مخطط أوري للبيانات
لا شيء
نوع التمثيل الصامت
Contacts.CONTENT_TYPE
مثال على النية:

static final int REQUEST_SELECT_CONTACT = 1;

public void selectContact() {
    Intent intent = new Intent(Intent.ACTION_PICK);
    intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(intent, REQUEST_SELECT_CONTACT);
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_SELECT_CONTACT && resultCode == RESULT_OK) {
        Uri contactUri = data.getData();
        // Do something with the selected contact at contactUri
        ...
    }
}

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

حدد بيانات جهة اتصال محددة
لكي يقوم المستخدم بتحديد جزء معين من المعلومات من جهة اتصال، مثل رقم الهاتف أو عنوان البريد الإلكتروني أو نوع بيانات آخر، استخدم الإجراء ACTION_PICK وحدد نوع مايم لأحد أنواع المحتويات المدرجة أدناه، مثل CommonDataKinds.Phone.CONTENT_TYPE للحصول على رقم هاتف جهة الاتصال.

إذا كنت تحتاج إلى استرداد نوع واحد فقط من البيانات من جهة اتصال، فإن هذه التقنية التي تحتوي على CONTENT_TYPE من فئات ContactsContract.CommonDataKinds تكون أكثر كفاءة من استخدام Contacts.CONTENT_TYPE (كما هو موضح في القسم السابق) لأن النتيجة توفر لك إمكانية الدخول المباشر إلى البيانات المطلوبة دون الحاجة إلى إجراء استعلام أكثر تعقيدا إلى موفر اتصالات .

تحتوي النتيجة onActivityResult() تسليمها إلى onActivityResult() رد الاتصال content: أوري مشيرا إلى بيانات الاتصال المحددة. يمنح الرد أذونات مؤقتة للتطبيق لقراءة بيانات الاتصال هذه حتى إذا لم يتضمن READ_CONTACTS إذن READ_CONTACTS .

عمل
ACTION_PICK
مخطط أوري للبيانات
لا شيء
نوع التمثيل الصامت
CommonDataKinds.Phone.CONTENT_TYPE
اختر من جهات الاتصال التي تحتوي على رقم هاتف.
CommonDataKinds.Email.CONTENT_TYPE
اختر من جهات الاتصال التي تحتوي على عنوان بريد إلكتروني.
CommonDataKinds.StructuredPostal.CONTENT_TYPE
اختر من جهات الاتصال التي تحتوي على عنوان بريدي.
أو أحد قيم CONTENT_TYPE الأخرى ضمن CONTENT_TYPE .

مثال على النية:

static final int REQUEST_SELECT_PHONE_NUMBER = 1;

public void selectContact() {
    // Start an activity for the user to pick a phone number from contacts
    Intent intent = new Intent(Intent.ACTION_PICK);
    intent.setType(CommonDataKinds.Phone.CONTENT_TYPE);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(intent, REQUEST_SELECT_PHONE_NUMBER);
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_SELECT_PHONE_NUMBER && resultCode == RESULT_OK) {
        // Get the URI and query the content provider for the phone number
        Uri contactUri = data.getData();
        String[] projection = new String[]{CommonDataKinds.Phone.NUMBER};
        Cursor cursor = getContentResolver().query(contactUri, projection,
                null, null, null);
        // If the cursor returned is valid, get the phone number
        if (cursor != null && cursor.moveToFirst()) {
            int numberIndex = cursor.getColumnIndex(CommonDataKinds.Phone.NUMBER);
            String number = cursor.getString(numberIndex);
            // Do something with the phone number
            ...
        }
    }
}

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

هناك في المقام الأول طريقتان لاسترداد أوري لجهة الاتصال أولا:

استخدام أوري جهة الاتصال التي تم إرجاعها بواسطة ACTION_PICK ، كما هو موضح في القسم السابق (هذا النهج لا يتطلب أي أذونات التطبيق).
الوصول إلى قائمة بجميع جهات الاتصال مباشرة، كما هو موضح في استرداد قائمة جهات الاتصال (يتطلب هذا النهج إذن READ_CONTACTS ).
عمل
ACTION_VIEW
مخطط أوري للبيانات
content:<URI>
نوع التمثيل الصامت
لا شيء. يتم الاستدلال على النوع من عنوان أوري للاتصال.
مثال على النية:
public void viewContact(Uri contactUri) {
    Intent intent = new Intent(Intent.ACTION_VIEW, contactUri);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}
تعديل جهة اتصال حالية
لتعديل جهة اتصال معروفة، استخدم الإجراء ACTION_EDIT ، ACTION_EDIT جهة الاتصال التي تحتوي على content: أوري كبيانات نية، وقم بتضمين أي معلومات اتصال معروفة في إضافات تحددها الثوابت في ContactsContract.Intents.Insert .

هناك في المقام الأول طريقتان لاسترداد معرف أوري للاتصال أولا:

استخدام أوري جهة الاتصال التي تم إرجاعها بواسطة ACTION_PICK ، كما هو موضح في القسم السابق (هذا النهج لا يتطلب أي أذونات التطبيق).
الوصول إلى قائمة بجميع جهات الاتصال مباشرة، كما هو موضح في استرداد قائمة جهات الاتصال (يتطلب هذا النهج إذن READ_CONTACTS ).
عمل
ACTION_EDIT
مخطط أوري للبيانات
content:<URI>
نوع التمثيل الصامت
يتم الاستدلال على النوع من عنوان أوري للاتصال.
إضافات
واحد أو أكثر من الإضافات المحددة في ContactsContract.Intents.Insert بحيث يمكنك تعبئة الحقول من تفاصيل الاتصال.
مثال على النية:
public void editContact(Uri contactUri, String email) {
    Intent intent = new Intent(Intent.ACTION_EDIT);
    intent.setData(contactUri);
    intent.putExtra(Intents.Insert.EMAIL, email);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

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

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

عمل
ACTION_INSERT
مخطط أوري للبيانات
لا شيء
نوع التمثيل الصامت
Contacts.CONTENT_TYPE
إضافات
واحد أو أكثر من الإضافات المحددة في ContactsContract.Intents.Insert .
مثال على النية:


public void insertContact(String name, String email) {
    Intent intent = new Intent(Intent.ACTION_INSERT);
    intent.setType(Contacts.CONTENT_TYPE);
    intent.putExtra(Intents.Insert.NAME, name);
    intent.putExtra(Intents.Insert.EMAIL, email);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

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

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

عمل
ACTION_SENDTO (بدون مرفق) أو 
ACTION_SEND (لمرفق واحد) أو 
ACTION_SEND_MULTIPLE (لمرفقات متعددة)
مخطط أوري للبيانات
لا شيء
نوع التمثيل الصامت
"text/plain"
"*/*"
إضافات
Intent.EXTRA_EMAIL
مصفوفة سلسلة من جميع عناوين البريد الإلكتروني المستلمة "إلى".
Intent.EXTRA_CC
صفيف سلسلة من جميع عناوين البريد الإلكتروني للمستلمين "سيسي".
Intent.EXTRA_BCC
صفيف سلسلة من جميع عناوين البريد الإلكتروني للمستلمين "بسك".
Intent.EXTRA_SUBJECT
سلسلة مع موضوع البريد الإلكتروني.
Intent.EXTRA_TEXT
سلسلة مع نص الرسالة الإلكترونية.
Intent.EXTRA_STREAM
A Uri مشيرا إلى المرفق. في حالة استخدام الإجراء ACTION_SEND_MULTIPLE ، يجب أن يكون هذا بدلا من ACTION_SEND_MULTIPLE يحتوي على كائنات Uri متعددة.
مثال على النية:



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 الإجراء ACTION_SENDTO وقم بتضمين مخطط بيانات "mailto:" ACTION_SENDTO "mailto:" . فمثلا:





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 نوع مايم المطلوب. مرجع الملف عاد إلى التطبيق الخاص بك هو عابرة لدورة الحياة الحالية النشاط الخاص بك، لذلك إذا كنت ترغب في الوصول إليه في وقت لاحق يجب استيراد نسخة التي يمكنك قراءتها في وقت لاحق. كما يسمح هذا القصد للمستخدم بإنشاء ملف جديد في العملية (على سبيل المثال، بدلا من اختيار صورة موجودة، يمكن للمستخدم التقاط صورة جديدة مع الكاميرا).

تتضمن نية النتيجة التي تم تسليمها إلى أسلوب onActivityResult() البيانات التي تحتوي على عنوان أوري يشير إلى الملف. يمكن أن يكون عنوان أوري أي شيء، مثل http: أوري، file: أوري، أور كونتنت content: أوري. ومع ذلك، إذا كنت ترغب في تقييد الملفات التي يمكن تحديدها فقط على تلك التي يمكن الوصول إليها من موفر المحتوى ( content: أوري) والتي تتوفر كتدفق ملف مع openFileDescriptor() ، فيجب إضافة CATEGORY_OPENABLE إلى openFileDescriptor() .

على الروبوت 4.3 (أبي مستوى 18) وأعلى، يمكنك أيضا السماح للمستخدم لتحديد ملفات متعددة عن طريق إضافة EXTRA_ALLOW_MULTIPLE إلى القصد، تعيين إلى true . يمكنك ثم الوصول إلى كل من الملفات المحددة في كائن ClipData عاد بواسطة getClipData() .

عمل
ACTION_GET_CONTENT
مخطط أوري للبيانات
لا شيء
نوع التمثيل الصامت
نوع مايم المطابق لنوع الملف الذي يجب على المستخدم تحديده.
إضافات
EXTRA_ALLOW_MULTIPLE
منطقية تعلن ما إذا كان يمكن للمستخدم تحديد أكثر من ملف واحد في المرة الواحدة.
EXTRA_LOCAL_ONLY
منطقية تعلن ما إذا كان الملف الذي تم إرجاعه يجب أن يكون متوفرا مباشرة من الجهاز، بدلا من طلب تنزيل من خدمة بعيدة.
الفئة (اختياري)
CATEGORY_OPENABLE
لإرجاع الملفات "القابلة للفتح" فقط التي يمكن تمثيلها كتدفق ملف مع openFileDescriptor() .
مثال على النية للحصول على صورة:


Example intent to get a photo:

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
        ...
    }
}
Example intent filter to return a photo:

<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 و تحديد نوع مايم. للسماح للمستخدم بدلا من ذلك بإنشاء مستند جديد يمكن لتطبيقك الكتابة إليه، استخدم الإجراء ACTION_CREATE_DOCUMENT بدلا من ذلك. على سبيل المثال، بدلا من التحديد من مستندات بدف الحالية، تسمح نية ACTION_CREATE_DOCUMENT للمستخدمين بتحديد المكان الذي يرغبون في إنشاء مستند جديد (ضمن تطبيق آخر يدير وحدة تخزين المستند)، ثم يتلقى التطبيق الخاص بك موقع أوري حيث يمكن اكتب الوثيقة الجديدة.

في حين أن النية التي تم تسليمها إلى طريقة onActivityResult() من الإجراء ACTION_GET_CONTENT قد ترجع أوري من أي نوع، فإن القصد من النتيجة من ACTION_OPEN_DOCUMENT و ACTION_CREATE_DOCUMENT دائما تحديد الملف الذي تم اختياره content: أوري المدعوم من قبل DocumentsProvider . يمكنك فتح الملف مع openFileDescriptor() والاستعلام عن تفاصيله باستخدام الأعمدة من DocumentsContract.Document .

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

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

ملاحظة: يجب أن تحدد نواياك نوع مايم ويجب أن تعلن الفئة CATEGORY_OPENABLE . إذا كان ذلك مناسبا، يمكنك تحديد أكثر من نوع مايم واحد بإضافة مصفوفة أنواع مايم مع EXTRA_MIME_TYPES إضافية إذا قمت بذلك، يجب تعيين نوع مايم الأساسي في setType() إلى "*/*" .

عمل
ACTION_OPEN_DOCUMENT أو 
ACTION_CREATE_DOCUMENT
مخطط أوري للبيانات
لا شيء
نوع التمثيل الصامت
نوع مايم المطابق لنوع الملف الذي يجب على المستخدم تحديده.
إضافات
EXTRA_MIME_TYPES
مجموعة من أنواع مايم المطابقة لأنواع الملفات التي يطلبها تطبيقك. عند استخدام هذا إضافية، يجب تعيين نوع مايم الأساسي في setType() إلى "*/*" .
EXTRA_ALLOW_MULTIPLE
منطقية تعلن ما إذا كان يمكن للمستخدم تحديد أكثر من ملف واحد في المرة الواحدة.
EXTRA_TITLE
للاستخدام مع ACTION_CREATE_DOCUMENT لتحديد اسم ملف أولي.
EXTRA_LOCAL_ONLY
منطقية تعلن ما إذا كان الملف الذي تم إرجاعه يجب أن يكون متوفرا مباشرة من الجهاز، بدلا من طلب تنزيل من خدمة بعيدة.
الفئة
CATEGORY_OPENABLE
لإرجاع الملفات "القابلة للفتح" فقط التي يمكن تمثيلها كتدفق ملف مع openFileDescriptor() .
مثال على النية للحصول على صورة:

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 . بدلا من ذلك، يتلقى النظام هذا القصد ويعرض جميع الملفات المتاحة من مختلف التطبيقات في واجهة مستخدم موحدة.

لتوفير ملفات تطبيقك في واجهة المستخدم هذه والسماح للتطبيقات الأخرى بفتحها، يجب تنفيذ DocumentsProvider وتضمين فلتر نية ل 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>

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

الإجراءات المحلية
اتصل بسيارة

إجراءات غوغل فوايس

"احصل على سيارة أجرة"
"اتصل بي سيارة"
(أندرويد وير فقط)
لاستدعاء سيارة أجرة، استخدم الإجراء ACTION_RESERVE_TAXI_RESERVATION .

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

عمل
ACTION_RESERVE_TAXI_RESERVATION
عنوان أوري للبيانات
لا شيء
نوع التمثيل الصامت
لا شيء
إضافات
لا شيء
مثال على النية:
public void callCar() {
    Intent intent = new Intent(ReserveIntents.ACTION_RESERVE_TAXI_RESERVATION);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}
Example intent filter:

<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 باستخدام أحد المخططات المحددة أدناه.

عمل
ACTION_VIEW
مخطط أوري للبيانات
geo: latitude , longitude
عرض الخريطة عند خطوط الطول والعرض المحددة.
مثال: "geo:47.6,-122.3"

geo: latitude , longitude ?z= zoom
عرض الخريطة عند خطوط الطول والعرض معين على مستوى التكبير معين. مستوى التكبير 1 يظهر الأرض بأكملها، تتمحور في اللات معين، لغ . أعلى (أقرب) مستوى التكبير هو 23.
مثال: "geo:47.6,-122.3?z=11"

geo:0,0?q=lat,lng(label)
عرض الخريطة عند خطوط الطول والعرض المعطاة مع تسمية سلسلة.
مثال: "geo:0,0?q=34.99,-106.61(Treasure)"

geo:0,0?q=my+street+address
عرض موقع "عنوان الشارع" (قد يكون عنوانا محددا أو طلب بحث موقع معين).
مثال: "geo:0,0?q=1600+Amphitheatre+Parkway%2C+CA"

ملاحظة: يجب ترميز جميع السلاسل التي تم تمريرها في عنوان أوري geo . على سبيل المثال، سلسلة 1st & Pike, Seattle يجب أن تصبح 1st%20%26%20Pike%2C%20Seattle . يمكن ترميز المسافات في السلسلة مع %20 أو استبدالها بعلامة الجمع ( + ).

نوع التمثيل الصامت
لا شيء
مثال على النية:

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

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


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

عمل
ACTION_VIEW
مخطط أوري للبيانات
file: <URI>
content: <URI>
http: <URL>
نوع التمثيل الصامت
"audio/*"
"application/ogg"
"application/x-ogg"
"application/itunes"
أو أي تطبيق آخر قد يتطلبه تطبيقك.
مثال على النية:

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

<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
مخطط أوري للبيانات
لا شيء
نوع التمثيل الصامت
لا شيء
إضافات
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(مطلوب) - سلسلة يحتوي على أي مزيج من: الألبوم، والفنان، والنوع، والتشغيل، أو العنوان. يتم توفير هذه اضافية دائما عن التوافق: التطبيقات الحالية التي لا تعرف عن وسائل البحث يمكن معالجة هذه النية كما بحث غير منظم.
مثال النية:

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

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);
    }
}
Example intent filter:

<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اضافية في واردة Intentلتحديد وضع البحث. مرة واحدة نشاطك حددت وضع البحث، وينبغي أن تقرأ قيم اشياء أخرى لهذا الوضع بحث معين. مع هذه المعلومات يمكن أن التطبيق الخاص بك، ثم إجراء البحث ضمن مخزونها لتشغيل المحتوى الذي يطابق الاستعلام البحث. فمثلا:






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 البيانات
لا شيء
نوع التمثيل الصامت
PLAIN_TEXT_TYPE
"* / *"
إضافات
EXTRA_NAME
سلسلة تشير إلى عنوان أو موضوع المذكرة.
EXTRA_TEXT
سلسلة تشير إلى نص المذكرة.
مثال النية:


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);
    }
}
Example intent filter:

<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"
"بوب CALL"
"البريد الصوتي مكالمة"
لإجراء مكالمة هاتفية مباشرة، استخدم 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>
نوع التمثيل الصامت
لا شيء
أرقام الهاتف الصالحة هي تلك التي تم تحديدها في وRFC IETF 3966 . وتشمل الأمثلة الصالحة ما يلي:

tel:2125551212
tel:(212) 555 1212
طالب الهاتف هو جيد في مخططات تطبيع، مثل أرقام الهاتف. ذلك غير مطلوب مخطط وصفه بدقة في Uri.parse()الأسلوب. ومع ذلك، إذا كان لديك لم يحاكم مخطط أو غير متأكد ما إذا كان يمكن التعامل معها، استخدام Uri.fromParts()أسلوب بدلا من ذلك.

مثال النية:

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 البيانات
لا شيء
نوع التمثيل الصامت
لا شيء
إضافات
SearchManager.QUERY
سلسلة البحث.
مثال النية:

public void searchWeb(String query) {
    Intent intent = new Intent(Intent.ACTION_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 
اطلع على Settingsوثائق لشاشات إعدادات إضافية المتوفرة.

مخطط URI البيانات
لا شيء
نوع التمثيل الصامت
لا شيء
مثال النية:

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

الرسائل النصية
إنشاء رسالة / MMS SMS مع المرفقات
لبدء SMS أو رسالة نصية MMS، استخدم أحد الإجراءات عازمة أدناه وتحديد تفاصيل الرسالة مثل رقم الهاتف، الموضوع، ونص الرسالة باستخدام مفاتيح إضافية المدرجة أدناه.

عمل
ACTION_SENDTOأو 
ACTION_SENDأو
ACTION_SEND_MULTIPLE
مخطط URI البيانات
sms: <phone_number>
smsto: <phone_number>
mms: <phone_number>
mmsto: <phone_number>
يتم التعامل مع كل هذه المخططات هي نفسها.

نوع التمثيل الصامت
"text/plain"
"image/*"
"video/*"
إضافات
"subject"
سلسلة لموضوع الرسالة (عادة لMMS فقط).
"sms_body"
سلسلة لرسالة نصية.
EXTRA_STREAM
و Uriيشير إلى صورة أو فيديو لنعلق. في حالة استخدام ACTION_SEND_MULTIPLEالعمل، وينبغي أن يكون هذا خارج على ArrayListمن Uriالصورة لافتا إلى الصور / الفيديو إرفاق.
مثال النية:


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:"خطة البيانات. فمثلا:

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);
    }
}
Example intent filter:

<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>

ملاحظة: إذا كنت تطوير / MMS التطبيق الرسائل SMS، يجب تطبيق المرشحات مصممة لعدة إجراءات إضافية من أجل أن تكون متاحة باعتبارها التطبيق SMS الافتراضي على الروبوت 4.4 وأعلى. لمزيد من المعلومات، راجع وثائق في Telephony.

متصفح الإنترنت
تحميل URL على شبكة الإنترنت

تطبيقات جوجل صوت

"example.com المفتوح"
لفتح صفحة ويب، استخدم ACTION_VIEWالعمل وتحديد URL على شبكة الإنترنت في البيانات عازمة.

عمل
ACTION_VIEW
مخطط URI البيانات
http: <URL> 
https: <URL>
نوع التمثيل الصامت
"text/plain"
"text/html"
"application/xhtml+xml"
"application/vnd.wap.xhtml+xml"
مثال النية:

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);
    }
}
Example intent filter:

<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>

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

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

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


adb shell am start -a <ACTION> -t <MIME_TYPE> -d <DATA> \
  -e <EXTRA_NAME> <EXTRA_VALUE> -n <ACTIVITY>
For example:
adb shell am start -a android.intent.action.DIAL \
  -d tel:555-5555 -n org.example.MyApp/.MyActivity

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

ليست هناك تعليقات:

إرسال تعليق

للوضع الليلي في التطبيق DayNight

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