सामान्य इंटेंट

इंटेंट की मदद से, किसी दूसरे ऐप्लिकेशन में कोई गतिविधि शुरू की जा सकती है. इसके लिए, आपको Intent ऑब्जेक्ट में, अपनी पसंद की कार्रवाई के बारे में बताना होगा. जैसे, "मैप देखें" या "फ़ोटो लें". इस तरह के इंटेंट को इंप्लिसिट इंटेंट कहा जाता है, क्योंकि इसमें ऐप्लिकेशन के उस कॉम्पोनेंट के बारे में नहीं बताया जाता जिसे शुरू करना है. इसके बजाय, इसमें कार्रवाई के बारे में बताया जाता है और कुछ डेटा दिया जाता है, ताकि कार्रवाई की जा सके.

startActivity() या startActivityForResult() को कॉल करने और उसे कोई इंप्लिसिट इंटेंट पास करने पर, सिस्टम उस इंटेंट को हल करता है. इसके बाद, वह उस इंटेंट को हैंडल करने वाले ऐप्लिकेशन को कॉल करता है और उससे जुड़ा Activity शुरू करता है. अगर इंटेंट को एक से ज़्यादा ऐप्लिकेशन हैंडल कर सकते हैं, तो सिस्टम उपयोगकर्ता को एक डायलॉग दिखाता है. इससे उपयोगकर्ता यह चुन सकता है कि उसे कौनसा ऐप्लिकेशन इस्तेमाल करना है.

इस पेज पर, कई इंप्लिसिट इंटेंट के बारे में बताया गया है. इनका इस्तेमाल, सामान्य कार्रवाइयां करने के लिए किया जा सकता है. इन्हें इंटेंट को हैंडल करने वाले ऐप्लिकेशन के हिसाब से व्यवस्थित किया गया है. हर सेक्शन में यह भी बताया गया है कि कार्रवाई करने की क्षमता के बारे में अपने ऐप्लिकेशन का विज्ञापन दिखाने के लिए, इरादे के हिसाब से फ़िल्टर कैसे बनाया जा सकता है.

चेतावनी: अगर डिवाइस पर कोई ऐसा ऐप्लिकेशन नहीं है जो इंप्लिसिट इंटेंट पा सकता है, तो startActivity() को कॉल करने पर ऐप्लिकेशन क्रैश हो जाता है. सबसे पहले यह पुष्टि करें कि इंटेंट पाने के लिए कोई ऐप्लिकेशन मौजूद है. इसके लिए, अपने Intent ऑब्जेक्ट पर resolveActivity() को कॉल करें. अगर नतीजा शून्य नहीं है, तो इसका मतलब है कि कम से कम एक ऐसा ऐप्लिकेशन है जो इंटेंट को हैंडल कर सकता है. साथ ही, startActivity() को कॉल करना सुरक्षित है. अगर नतीजा null है, तो इंटेंट का इस्तेमाल न करें. साथ ही, अगर हो सके, तो उस सुविधा को बंद कर दें जो इंटेंट को चालू करती है.

अगर आपको इंटेंट या इंटेंट फ़िल्टर बनाने का तरीका नहीं पता है, तो पहले इंटेंट और इंटेंट फ़िल्टर लेख पढ़ें.

इस पेज पर दिए गए इंटेंट को अपने डेवलपमेंट होस्ट से ट्रिगर करने का तरीका जानने के लिए, Android Debug Bridge की मदद से इंटेंट की पुष्टि करें सेक्शन देखें.

Google की बोलकर फ़ोन इस्तेमाल करने की सुविधा

Google Voice Actions, बोले गए निर्देशों के जवाब में इस पेज पर दिए गए कुछ इंटेंट को ट्रिगर करता है. ज़्यादा जानकारी के लिए, सिस्टम की आवाज़ से जुड़ी कार्रवाइयों का इस्तेमाल शुरू करना लेख पढ़ें.

अलार्म घड़ी

अलार्म क्लॉक ऐप्लिकेशन के लिए, यहां कुछ सामान्य कार्रवाइयां दी गई हैं. साथ ही, हर कार्रवाई को पूरा करने की सुविधा के बारे में अपने ऐप्लिकेशन का विज्ञापन दिखाने के लिए, इंटेंट फ़िल्टर बनाने से जुड़ी ज़रूरी जानकारी भी दी गई है.

अलार्म सेट करना

Google की बोलकर फ़ोन इस्तेमाल करने की सुविधा

  • "सुबह सात बजे का अलार्म सेट करो"

नया अलार्म बनाने के लिए, ACTION_SET_ALARM कार्रवाई का इस्तेमाल करें. साथ ही, अलार्म की जानकारी दें. जैसे, समय और मैसेज. इसके लिए, यहां दिए गए एक्सट्रा का इस्तेमाल करें.

ध्यान दें: Android 2.3 (एपीआई लेवल 9) और इससे पहले के वर्शन में, सिर्फ़ घंटे, मिनट, और मैसेज के अतिरिक्त विकल्प उपलब्ध हैं. अन्य सुविधाएं, प्लैटफ़ॉर्म के बेहतर वर्शन में उपलब्ध हैं.

कार्रवाई
ACTION_SET_ALARM
डेटा यूआरआई
कोई नहीं
MIME टाइप
कोई नहीं
अन्य सुविधाएं
EXTRA_HOUR
अलार्म का समय.
EXTRA_MINUTES
अलार्म के लिए मिनट.
EXTRA_MESSAGE
अलार्म की पहचान करने के लिए, कस्टम मैसेज.
EXTRA_DAYS
एक ArrayList, जिसमें हर वह दिन शामिल हो जिस दिन यह अलार्म दोहराया जाता है. हर दिन को Calendar क्लास के पूर्णांक के साथ बताया जाना चाहिए. जैसे, MONDAY.

अगर आपको सिर्फ़ एक बार के लिए अलार्म सेट करना है, तो इस विकल्प को न चुनें.

EXTRA_RINGTONE
अलार्म के लिए इस्तेमाल की जाने वाली रिंगटोन का content: यूआरआई या VALUE_RINGTONE_SILENT अगर कोई रिंगटोन नहीं चाहिए.

डिफ़ॉल्ट रिंगटोन का इस्तेमाल करने के लिए, इस अतिरिक्त पैरामीटर को न जोड़ें.

EXTRA_VIBRATE
यह बूलियन वैल्यू बताती है कि इस अलार्म के लिए वाइब्रेट करना है या नहीं.
EXTRA_SKIP_UI
यह एक बूलियन है. इससे पता चलता है कि अलार्म सेट करते समय, जवाब देने वाले ऐप्लिकेशन को अपना यूज़र इंटरफ़ेस (यूआई) स्किप करना चाहिए या नहीं. अगर वैल्यू true पर सेट है, तो ऐप्लिकेशन को पुष्टि करने वाले किसी भी यूज़र इंटरफ़ेस (यूआई) को बायपास करना होगा और तय किए गए अलार्म को सेट करना होगा.

उदाहरण के लिए इंटेंट:

Kotlin

fun createAlarm(message: String, hour: Int, minutes: Int) {
    val intent = Intent(AlarmClock.ACTION_SET_ALARM).apply {
        putExtra(AlarmClock.EXTRA_MESSAGE, message)
        putExtra(AlarmClock.EXTRA_HOUR, hour)
        putExtra(AlarmClock.EXTRA_MINUTES, minutes)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

Java

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>

टाइमर सेट करना

Google की बोलकर फ़ोन इस्तेमाल करने की सुविधा

  • "पांच मिनट का टाइमर सेट करो"

काउंटडाउन टाइमर बनाने के लिए, ACTION_SET_TIMER कार्रवाई का इस्तेमाल करें. साथ ही, टाइमर की जानकारी दें. जैसे, अवधि. इसके लिए, यहां दिए गए एक्सट्रा का इस्तेमाल करें.

ध्यान दें: यह इंटेंट, Android 4.4 (एपीआई लेवल 19) और इसके बाद के वर्शन में उपलब्ध है.

कार्रवाई
ACTION_SET_TIMER
डेटा यूआरआई
कोई नहीं
MIME टाइप
कोई नहीं
अन्य सुविधाएं
EXTRA_LENGTH
टाइमर की अवधि, सेकंड में.
EXTRA_MESSAGE
टाइमर की पहचान करने के लिए कस्टम मैसेज.
EXTRA_SKIP_UI
यह एक बूलियन है. इससे यह तय होता है कि टाइमर सेट करते समय, जवाब देने वाले ऐप्लिकेशन को अपना यूज़र इंटरफ़ेस (यूआई) स्किप करना चाहिए या नहीं. अगर यह वैल्यू सही है, तो ऐप्लिकेशन को पुष्टि करने वाले किसी भी यूज़र इंटरफ़ेस (यूआई) को बायपास करना होगा और तय किए गए टाइमर को शुरू करना होगा.

उदाहरण के लिए इंटेंट:

Kotlin

fun startTimer(message: String, seconds: Int) {
    val intent = Intent(AlarmClock.ACTION_SET_TIMER).apply {
        putExtra(AlarmClock.EXTRA_MESSAGE, message)
        putExtra(AlarmClock.EXTRA_LENGTH, seconds)
        putExtra(AlarmClock.EXTRA_SKIP_UI, true)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

Java

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 ऐक्शन का इस्तेमाल करें.

हालांकि, इस इंटेंट को बहुत कम ऐप्लिकेशन चालू करते हैं, क्योंकि इसका इस्तेमाल मुख्य रूप से सिस्टम ऐप्लिकेशन करते हैं. अलार्म क्लॉक की तरह काम करने वाला कोई भी ऐप्लिकेशन, इस इंटेंट फ़िल्टर को लागू कर सकता है. साथ ही, मौजूदा अलार्म की सूची दिखाकर जवाब दे सकता है.

ध्यान दें: यह इंटेंट, Android 4.4 (एपीआई लेवल 19) और इसके बाद के वर्शन में उपलब्ध है.

कार्रवाई
ACTION_SHOW_ALARMS
डेटा यूआरआई
कोई नहीं
MIME टाइप
कोई नहीं

इरादे के हिसाब से फ़िल्टर करने का उदाहरण:

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

Calendar

इवेंट जोड़ना, कैलेंडर ऐप्लिकेशन में की जाने वाली एक सामान्य कार्रवाई है. नीचे दिए गए सेक्शन में दी गई जानकारी का इस्तेमाल करके, अपने ऐप्लिकेशन की इस कार्रवाई को पूरा करने की क्षमता का विज्ञापन दिखाने के लिए, इंटेंट फ़िल्टर बनाएं.

कैलेंडर इवेंट जोड़ना

उपयोगकर्ता के कैलेंडर में नया इवेंट जोड़ने के लिए, ACTION_INSERT ऐक्शन का इस्तेमाल करें. साथ ही, Events.CONTENT_URI का इस्तेमाल करके डेटा यूआरआई तय करें. इसके बाद, यहां दिए गए अतिरिक्त पैरामीटर का इस्तेमाल करके, इवेंट की अलग-अलग जानकारी दी जा सकती है.

कार्रवाई
ACTION_INSERT
डेटा यूआरआई
Events.CONTENT_URI
MIME टाइप
"vnd.android.cursor.dir/event"
अन्य सुविधाएं
EXTRA_EVENT_ALL_DAY
यह बूलियन वैल्यू बताती है कि इवेंट पूरे दिन चलने वाला है या नहीं.
EXTRA_EVENT_BEGIN_TIME
इवेंट के शुरू होने का समय (Epoch के बाद के मिलीसेकंड).
EXTRA_EVENT_END_TIME
इवेंट के खत्म होने का समय (Epoch के बाद के मिलीसेकंड).
TITLE
इवेंट का टाइटल.
DESCRIPTION
इवेंट की जानकारी.
EVENT_LOCATION
इवेंट की जगह.
EXTRA_EMAIL
कॉमा लगाकर अलग किए गए ईमेल पतों की सूची. इससे न्योता पाने वालों के बारे में पता चलता है.

CalendarContract.EventsColumns क्लास में तय किए गए कॉन्स्टेंट का इस्तेमाल करके, इवेंट की ज़्यादा जानकारी दी जा सकती है.

उदाहरण के लिए इंटेंट:

Kotlin

fun addEvent(title: String, location: String, begin: Long, end: Long) {
    val intent = Intent(Intent.ACTION_INSERT).apply {
        data = 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(packageManager) != null) {
        startActivity(intent)
    }
}

Java

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

कैमरा

यहां कैमरा ऐप्लिकेशन के लिए सामान्य कार्रवाइयां दी गई हैं. साथ ही, हर कार्रवाई को पूरा करने के लिए, आपके ऐप्लिकेशन की क्षमता का विज्ञापन दिखाने के लिए इंटेंट फ़िल्टर बनाने से जुड़ी जानकारी भी दी गई है.

कोई फ़ोटो या वीडियो कैप्चर करना और उसे वापस भेजना

कैमरा ऐप्लिकेशन खोलने और उससे ली गई फ़ोटो या वीडियो पाने के लिए, ACTION_IMAGE_CAPTURE या ACTION_VIDEO_CAPTURE ऐक्शन का इस्तेमाल करें. इसके अलावा, EXTRA_OUTPUTextra में उस यूआरआई की जगह की जानकारी भी दें जहां आपको कैमरे से ली गई फ़ोटो या वीडियो को सेव करना है.

कार्रवाई
ACTION_IMAGE_CAPTURE या
ACTION_VIDEO_CAPTURE
डेटा यूआरआई स्कीम
कोई नहीं
MIME टाइप
कोई नहीं
अन्य सुविधाएं
EXTRA_OUTPUT
यूआरआई की वह जगह जहां कैमरा ऐप्लिकेशन, फ़ोटो या वीडियो फ़ाइल को Uri ऑब्जेक्ट के तौर पर सेव करता है.

जब कैमरा ऐप्लिकेशन, आपकी गतिविधि पर फ़ोकस वापस ले आता है, तब आपको फ़ोटो या वीडियो का ऐक्सेस मिल जाता है. इसका मतलब है कि आपके ऐप्लिकेशन को onActivityResult() कॉलबैक मिलता है. इसके बाद, onActivityResult() वैल्यू के साथ तय किए गए यूआरआई पर फ़ोटो या वीडियो को ऐक्सेस किया जा सकता है.EXTRA_OUTPUT

ध्यान दें: ACTION_IMAGE_CAPTURE का इस्तेमाल करके फ़ोटो कैप्चर करने पर, कैमरा नतीजे Intent में फ़ोटो की छोटी की गई कॉपी या थंबनेल भी दिखा सकता है. इसे "data" नाम के अतिरिक्त फ़ील्ड में Bitmap के तौर पर सेव किया जाता है.

उदाहरण के लिए इंटेंट:

Kotlin

const val REQUEST_IMAGE_CAPTURE = 1
val locationForPhotos: Uri = ...

fun capturePhoto(targetFilename: String) {
    val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE).apply {
        putExtra(MediaStore.EXTRA_OUTPUT, Uri.withAppendedPath(locationForPhotos, targetFilename))
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivityForResult(intent, REQUEST_IMAGE_CAPTURE)
    }
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == Activity.RESULT_OK) {
        val thumbnail: Bitmap = data.getParcelableExtra("data")
        // Do other work with full size photo saved in locationForPhotos.
        ...
    }
}

Java

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

public void capturePhoto(String targetFilename) {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT,
            Uri.withAppendedPath(locationForPhotos, 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.getParcelableExtra("data");
        // Do other work with full size photo saved in locationForPhotos.
        ...
    }
}

Android 12 (एपीआई लेवल 31) या इसके बाद के वर्शन पर काम करते समय, ऐसा करने के लिए इंटेंट के इस उदाहरण को देखें.

उदाहरण के लिए इंटेंट:

Kotlin

val REQUEST_IMAGE_CAPTURE = 1

private fun dispatchTakePictureIntent() {
    val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
    try {
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE)
    } catch (e: ActivityNotFoundException) {
        // Display error state to the user.
    }
}

Java

static final int REQUEST_IMAGE_CAPTURE = 1;

private void dispatchTakePictureIntent() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    try {
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
    } catch (ActivityNotFoundException e) {
        // Display error state to the user.
    }
}
</section></div>

फ़ोटो कैप्चर करने के लिए, इस इंटेंट का इस्तेमाल करने के तरीके के बारे में ज़्यादा जानकारी पाएं. इसमें, आउटपुट की जगह के लिए सही Uri बनाने का तरीका भी शामिल है. इसके लिए, फ़ोटो लेना या वीडियो लेना लेख पढ़ें.

इरादे के हिसाब से फ़िल्टर करने का उदाहरण:

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

इस इंटेंट को हैंडल करते समय, अपनी गतिविधि से यह जांच करवाएं कि आने वाले Intent में EXTRA_OUTPUT एक्स्ट्रा मौजूद है या नहीं. इसके बाद, कैप्चर की गई इमेज या वीडियो को उस एक्स्ट्रा में बताई गई जगह पर सेव करें. साथ ही, setResult() को Intent के साथ कॉल करें. इस Intent में, "data" नाम के एक्स्ट्रा में कंप्रेस किया गया थंबनेल शामिल होना चाहिए.

कैमरा ऐप्लिकेशन को स्टिल इमेज मोड में शुरू करना

Google की बोलकर फ़ोन इस्तेमाल करने की सुविधा

  • "फ़ोटो खींचो"

स्टिल इमेज मोड में कैमरा ऐप्लिकेशन खोलने के लिए, INTENT_ACTION_STILL_IMAGE_CAMERA कार्रवाई का इस्तेमाल करें.

कार्रवाई
INTENT_ACTION_STILL_IMAGE_CAMERA
डेटा यूआरआई स्कीम
कोई नहीं
MIME टाइप
कोई नहीं
अन्य सुविधाएं
कोई नहीं

उदाहरण के लिए इंटेंट:

Kotlin

private fun dispatchTakePictureIntent() {
    val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
    try {
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE)
    } catch (e: ActivityNotFoundException) {
        // Display error state to the user.
    }
}

Java

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

इरादे के हिसाब से फ़िल्टर करने का उदाहरण:

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

कैमरा ऐप्लिकेशन को वीडियो मोड में शुरू करना

Google की बोलकर फ़ोन इस्तेमाल करने की सुविधा

  • "वीडियो रिकॉर्ड करो"

वीडियो मोड में कैमरा ऐप्लिकेशन खोलने के लिए, INTENT_ACTION_VIDEO_CAMERA कार्रवाई का इस्तेमाल करें.

कार्रवाई
INTENT_ACTION_VIDEO_CAMERA
डेटा यूआरआई स्कीम
कोई नहीं
MIME टाइप
कोई नहीं
अन्य सुविधाएं
कोई नहीं

उदाहरण के लिए इंटेंट:

Kotlin

fun capturePhoto() {
    val intent = Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA)
    if (intent.resolveActivity(packageManager) != null) {
        startActivityForResult(intent, REQUEST_IMAGE_CAPTURE)
    }
}

Java

public void capturePhoto() {
    Intent intent = new Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
    }
}

इरादे के हिसाब से फ़िल्टर करने का उदाहरण:

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

संपर्क/लोग ऐप्लिकेशन

संपर्क जानकारी मैनेज करने वाले ऐप्लिकेशन के लिए, यहां कुछ सामान्य कार्रवाइयां दी गई हैं. साथ ही, हर कार्रवाई को पूरा करने की सुविधा के बारे में अपने ऐप्लिकेशन का विज्ञापन दिखाने के लिए, इंटेंट फ़िल्टर बनाने से जुड़ी ज़रूरी जानकारी भी दी गई है.

कोई संपर्क चुनें

अगर आपको उपयोगकर्ता से कोई संपर्क चुनने और अपने ऐप्लिकेशन को संपर्क जानकारी का ऐक्सेस देने के लिए कहना है, तो ACTION_PICK कार्रवाई का इस्तेमाल करें. साथ ही, MIME टाइप को Contacts.CONTENT_TYPE के तौर पर सेट करें.

आपके onActivityResult() कॉलबैक को मिले Intent नतीजे में, चुने गए संपर्क की ओर ले जाने वाला content: यूआरआई शामिल होता है. इस जवाब से, आपके ऐप्लिकेशन को Contacts Provider API का इस्तेमाल करके, उस संपर्क को ऐक्सेस करने की कुछ समय के लिए अनुमतियां मिल जाती हैं. भले ही, आपके ऐप्लिकेशन में READ_CONTACTS अनुमति शामिल न हो.

अहम जानकारी: अगर आपको सिर्फ़ संपर्क जानकारी के किसी खास हिस्से का ऐक्सेस चाहिए, जैसे कि फ़ोन नंबर या ईमेल पता, तो संपर्क जानकारी का कोई खास हिस्सा चुनने के बारे में जानने के लिए, अगला सेक्शन देखें.

कार्रवाई
ACTION_PICK
डेटा यूआरआई स्कीम
कोई नहीं
MIME टाइप
Contacts.CONTENT_TYPE

उदाहरण के लिए इंटेंट:

Kotlin

const val REQUEST_SELECT_CONTACT = 1

fun selectContact() {
    val intent = Intent(Intent.ACTION_PICK).apply {
        type = ContactsContract.Contacts.CONTENT_TYPE
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivityForResult(intent, REQUEST_SELECT_CONTACT)
    }
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    if (requestCode == REQUEST_SELECT_CONTACT && resultCode == RESULT_OK) {
        val contactUri: Uri = data.data
        // Do something with the selected contact at contactUri.
        //...
    }
}

Java

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 अनुमति की ज़रूरत नहीं होती. जैसे, डिसप्ले नेम और संपर्क को स्टार किया गया है या नहीं. हालांकि, अगर आपको किसी संपर्क के बारे में ज़्यादा जानकारी चाहिए, जैसे कि उसका फ़ोन नंबर या ईमेल पता, तो आपको READ_CONTACTS अनुमति की ज़रूरत होगी.

संपर्क जानकारी का कोई खास डेटा चुनना

अगर आपको उपयोगकर्ता से संपर्क की कोई खास जानकारी चुनवानी है, जैसे कि फ़ोन नंबर, ईमेल पता या अन्य डेटा टाइप, तो ACTION_PICK कार्रवाई का इस्तेमाल करें. साथ ही, एमआईएमई टाइप को इनमें से किसी एक कॉन्टेंट टाइप पर सेट करें. जैसे, संपर्क का फ़ोन नंबर पाने के लिए CommonDataKinds.Phone.CONTENT_TYPE.

ध्यान दें: कई मामलों में, आपके ऐप्लिकेशन को किसी संपर्क के बारे में खास जानकारी देखने के लिए, READ_CONTACTS अनुमति की ज़रूरत होती है.

अगर आपको किसी संपर्क से सिर्फ़ एक तरह का डेटा वापस पाना है, तो ContactsContract.CommonDataKinds क्लास से CONTENT_TYPE का इस्तेमाल करने वाली यह तकनीक, Contacts.CONTENT_TYPE का इस्तेमाल करने से ज़्यादा असरदार है. इसके बारे में पिछले सेक्शन में बताया गया है. इस नतीजे से, आपको सीधे तौर पर अपनी ज़रूरत का डेटा मिल जाता है. इसके लिए, आपको संपर्क जानकारी देने वाली कंपनी से ज़्यादा मुश्किल क्वेरी करने की ज़रूरत नहीं पड़ती.

आपके onActivityResult() कॉलबैक को भेजे गए नतीजे Intent में, चुने गए संपर्क डेटा की ओर ले जाने वाला content: यूआरआई होता है. इस जवाब से, आपके ऐप्लिकेशन को संपर्क डेटा को पढ़ने की कुछ समय के लिए अनुमति मिल जाती है. भले ही, आपके ऐप्लिकेशन में READ_CONTACTS अनुमति शामिल न हो.

कार्रवाई
ACTION_PICK
डेटा यूआरआई स्कीम
कोई नहीं
MIME टाइप
CommonDataKinds.Phone.CONTENT_TYPE
फ़ोन नंबर वाले संपर्कों में से कोई संपर्क चुनें.
CommonDataKinds.Email.CONTENT_TYPE
उन संपर्कों में से चुनें जिनके पास ईमेल पता है.
CommonDataKinds.StructuredPostal.CONTENT_TYPE
डाक पते वाले संपर्कों में से चुनें.

इसके अलावा, ContactsContract में मौजूद कई अन्य CONTENT_TYPE वैल्यू में से कोई एक वैल्यू भी इस्तेमाल की जा सकती है.

उदाहरण के लिए इंटेंट:

Kotlin

const val REQUEST_SELECT_PHONE_NUMBER = 1

fun selectContact() {
    // Start an activity for the user to pick a phone number from contacts.
    val intent = Intent(Intent.ACTION_PICK).apply {
        type = CommonDataKinds.Phone.CONTENT_TYPE
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivityForResult(intent, REQUEST_SELECT_PHONE_NUMBER)
    }
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    if (requestCode == REQUEST_SELECT_PHONE_NUMBER && resultCode == Activity.RESULT_OK) {
        // Get the URI and query the content provider for the phone number.
        val contactUri: Uri = data.data
        val projection: Array<String> = arrayOf(CommonDataKinds.Phone.NUMBER)
        contentResolver.query(contactUri, projection, null, null, null).use { cursor ->
            // If the cursor returned is valid, get the phone number.
            if (cursor.moveToFirst()) {
                val numberIndex = cursor.getColumnIndex(CommonDataKinds.Phone.NUMBER)
                val number = cursor.getString(numberIndex)
                // Do something with the phone number.
                ...
            }
        }
    }
}

Java

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>
MIME टाइप
कोई नहीं. टाइप का पता संपर्क यूआरआई से लगाया जाता है.

उदाहरण के लिए इंटेंट:

Kotlin

fun viewContact(contactUri: Uri) {
    val intent = Intent(Intent.ACTION_VIEW, contactUri)
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

Java

public void viewContact(Uri contactUri) {
    Intent intent = new Intent(Intent.ACTION_VIEW, contactUri);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

किसी मौजूदा संपर्क में बदलाव करना

किसी संपर्क की जानकारी में बदलाव करने के लिए, ACTION_EDIT ऐक्शन का इस्तेमाल करें. साथ ही, इंटेंट डेटा के तौर पर content: यूआरआई का इस्तेमाल करके संपर्क की जानकारी दें. इसके अलावा, ContactsContract.Intents.Insert में मौजूद कॉन्स्टेंट के ज़रिए तय की गई अतिरिक्त जानकारी में, संपर्क की कोई भी जानकारी शामिल करें.

संपर्क यूआरआई को शुरू में वापस पाने के दो मुख्य तरीके हैं:

  • पिछले सेक्शन में दिखाए गए ACTION_PICK ऐक्शन से मिले संपर्क यूआरआई का इस्तेमाल करें. इस तरीके के लिए, ऐप्लिकेशन की किसी भी अनुमति की ज़रूरत नहीं होती.
  • संपर्कों की सूची वापस पाना में बताए गए तरीके से, सभी संपर्कों की सूची को सीधे तौर पर ऐक्सेस करें. इस तरीके के लिए, READ_CONTACTS अनुमति ज़रूरी है.
कार्रवाई
ACTION_EDIT
डेटा यूआरआई स्कीम
content:<URI>
MIME टाइप
टाइप का पता संपर्क यूआरआई से चलता है.
अन्य सुविधाएं
ContactsContract.Intents.Insert में तय किए गए एक या उससे ज़्यादा अतिरिक्त फ़ील्ड ताकि संपर्क जानकारी के फ़ील्ड भरे जा सकें.

उदाहरण के लिए इंटेंट:

Kotlin

fun editContact(contactUri: Uri, email: String) {
    val intent = Intent(Intent.ACTION_EDIT).apply {
        data = contactUri
        putExtra(ContactsContract.Intents.Insert.EMAIL, email)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

Java

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 कार्रवाई का इस्तेमाल करें. साथ ही, Contacts.CONTENT_TYPE को MIME टाइप के तौर पर तय करें. इसके अलावा, ContactsContract.Intents.Insert में दिए गए कॉन्टेंट में, संपर्क की कोई भी जानकारी शामिल करें.

कार्रवाई
ACTION_INSERT
डेटा यूआरआई स्कीम
कोई नहीं
MIME टाइप
Contacts.CONTENT_TYPE
अन्य सुविधाएं
ContactsContract.Intents.Insert में तय किए गए एक या उससे ज़्यादा अतिरिक्त शुल्क.

उदाहरण के लिए इंटेंट:

Kotlin

fun insertContact(name: String, email: String) {
    val intent = Intent(Intent.ACTION_INSERT).apply {
        type = ContactsContract.Contacts.CONTENT_TYPE
        putExtra(ContactsContract.Intents.Insert.NAME, name)
        putExtra(ContactsContract.Intents.Insert.EMAIL, email)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

Java

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 (कई अटैचमेंट)
डेटा यूआरआई स्कीम
कोई नहीं
MIME टाइप
"text/plain"
"*/*"
अन्य सुविधाएं
Intent.EXTRA_EMAIL
"पाने वाले" के सभी ईमेल पतों का स्ट्रिंग ऐरे.
Intent.EXTRA_CC
"कॉपी" में शामिल सभी लोगों के ईमेल पतों का स्ट्रिंग ऐरे.
Intent.EXTRA_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 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 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() तरीके को भेजे गए नतीजे के इंटेंट में, फ़ाइल की ओर ले जाने वाले यूआरआई के साथ डेटा शामिल होता है. यूआरआई कुछ भी हो सकता है. जैसे, http: यूआरआई, file: यूआरआई या content: यूआरआई. हालांकि, अगर आपको सिर्फ़ उन फ़ाइलों को चुनने की अनुमति देनी है जिन्हें कॉन्टेंट उपलब्ध कराने वाली कंपनी (content: यूआरआई) ऐक्सेस कर सकती है और जो openFileDescriptor() के साथ फ़ाइल स्ट्रीम के तौर पर उपलब्ध हैं, तो अपने इंटेंट में CATEGORY_OPENABLE कैटगरी जोड़ें.

Android 4.3 (एपीआई लेवल 18) और इसके बाद के वर्शन पर, उपयोगकर्ता को एक से ज़्यादा फ़ाइलें चुनने की अनुमति भी दी जा सकती है. इसके लिए, इंटेंट में EXTRA_ALLOW_MULTIPLE जोड़ें और इसे true पर सेट करें. इसके बाद, चुनी गई हर फ़ाइल को ClipData ऑब्जेक्ट में ऐक्सेस किया जा सकता है. यह ऑब्जेक्ट getClipData() से मिलता है.

कार्रवाई
ACTION_GET_CONTENT
डेटा यूआरआई स्कीम
कोई नहीं
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>

किसी खास तरह की फ़ाइल खोलना

आपको अपने ऐप्लिकेशन में इंपोर्ट करने के लिए किसी फ़ाइल की कॉपी पाने के बजाय, Android 4.4 या इसके बाद के वर्शन पर ACTION_GET_CONTENT कार्रवाई का इस्तेमाल करके, किसी ऐसी फ़ाइल को खोलने का अनुरोध किया जा सकता है जिसे किसी दूसरे ऐप्लिकेशन से मैनेज किया जाता है. इसके लिए, ACTION_OPEN_DOCUMENT कार्रवाई का इस्तेमाल करें और MIME टाइप तय करें. अगर आपको उपयोगकर्ता को ऐसा नया दस्तावेज़ बनाने की अनुमति देनी है जिसमें आपका ऐप्लिकेशन लिख सकता है, तो इसके बजाय ACTION_CREATE_DOCUMENT कार्रवाई का इस्तेमाल करें.

उदाहरण के लिए, ACTION_CREATE_DOCUMENT इंटेंट की मदद से, उपयोगकर्ता मौजूदा PDF दस्तावेज़ों में से किसी एक को चुनने के बजाय, यह चुन सकते हैं कि उन्हें नया दस्तावेज़ कहां बनाना है. जैसे, किसी ऐसे दूसरे ऐप्लिकेशन में जो दस्तावेज़ के स्टोरेज को मैनेज करता है. इसके बाद, आपके ऐप्लिकेशन को यूआरआई की वह जगह मिलती है जहां वह नया दस्तावेज़ लिख सकता है.

ACTION_GET_CONTENT ऐक्शन से आपके onActivityResult() तरीके को डिलीवर किया गया इंटेंट, किसी भी टाइप का यूआरआई दिखा सकता है. हालांकि, ACTION_OPEN_DOCUMENT और ACTION_CREATE_DOCUMENT से मिलने वाला नतीजा इंटेंट, हमेशा चुनी गई फ़ाइल को content: यूआरआई के तौर पर दिखाता है. यह DocumentsProvider के साथ काम करता है. openFileDescriptor() की मदद से फ़ाइल खोली जा सकती है. साथ ही, DocumentsContract.Document के कॉलम का इस्तेमाल करके, फ़ाइल की जानकारी के बारे में क्वेरी की जा सकती है.

इस यूआरआई से, आपके ऐप्लिकेशन को फ़ाइल को लंबे समय तक पढ़ने का ऐक्सेस मिलता है. साथ ही, हो सकता है कि उसे लिखने का ऐक्सेस भी मिले. ACTION_OPEN_DOCUMENT कार्रवाई तब खास तौर पर फ़ायदेमंद होती है, जब आपको किसी मौजूदा फ़ाइल को अपने ऐप्लिकेशन में कॉपी किए बिना पढ़ना हो. इसके अलावा, इसका इस्तेमाल किसी फ़ाइल को उसी जगह पर खोलने और उसमें बदलाव करने के लिए भी किया जा सकता है.

उपयोगकर्ता को एक से ज़्यादा फ़ाइलें चुनने की अनुमति देने के लिए, इंटेंट में EXTRA_ALLOW_MULTIPLE जोड़ें और उसे true पर सेट करें. अगर उपयोगकर्ता सिर्फ़ एक आइटम चुनता है, तो getData() से आइटम को वापस पाया जा सकता है. अगर उपयोगकर्ता एक से ज़्यादा आइटम चुनता है, तो getData() शून्य वैल्यू दिखाता है. ऐसे में, आपको getClipData() से मिले ClipData ऑब्जेक्ट से हर आइटम को वापस पाना होगा.

ध्यान दें: आपके इंटेंट में MIME टाइप के बारे में बताना ज़रूरी है. साथ ही, CATEGORY_OPENABLE कैटगरी के बारे में बताना ज़रूरी है. अगर ज़रूरी हो, तो एक से ज़्यादा MIME टाइप तय किए जा सकते हैं. इसके लिए, EXTRA_MIME_TYPES एक्स्ट्रा के साथ MIME टाइप का कलेक्शन जोड़ें. ऐसा करने पर, आपको setType() में प्राइमरी MIME टाइप को "*/*" पर सेट करना होगा.

कार्रवाई
ACTION_OPEN_DOCUMENT या
ACTION_CREATE_DOCUMENT
डेटा यूआरआई स्कीम
कोई नहीं
MIME टाइप
यह उस फ़ाइल टाइप से जुड़ा MIME टाइप है जिसे उपयोगकर्ता को चुनना है.
अन्य सुविधाएं
EXTRA_MIME_TYPES
यह MIME टाइप का एक ऐसा कलेक्शन है जो उन फ़ाइलों के टाइप से मेल खाता है जिनके लिए आपका ऐप्लिकेशन अनुरोध कर रहा है. इस एक्स्ट्रा का इस्तेमाल करते समय, आपको setType() में प्राइमरी MIME टाइप को "*/*" पर सेट करना होगा.
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 कार्रवाई के साथ किसी इंटेंट का जवाब नहीं दे सकते. इसके बजाय, सिस्टम को यह इंटेंट मिलता है और वह अलग-अलग ऐप्लिकेशन से उपलब्ध सभी फ़ाइलों को एक ही यूज़र इंटरफ़ेस में दिखाता है.

इस यूज़र इंटरफ़ेस (यूआई) में अपने ऐप्लिकेशन की फ़ाइलें उपलब्ध कराने और उन्हें अन्य ऐप्लिकेशन से खोलने की अनुमति देने के लिए, आपको 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>

आपके ऐप्लिकेशन से मैनेज की गई फ़ाइलों को अन्य ऐप्लिकेशन से खोलने के तरीके के बारे में ज़्यादा जानने के लिए, डिवाइस के स्टोरेज ऐक्सेस फ़्रेमवर्क का इस्तेमाल करके, फ़ाइलें खोलना लेख पढ़ें.

लोकल ऐक्शन

कार बुलवाना, एक सामान्य स्थानीय कार्रवाई है. नीचे दिए गए सेक्शन में दी गई जानकारी का इस्तेमाल करके, अपने ऐप्लिकेशन की इस कार्रवाई को पूरा करने की क्षमता का विज्ञापन दिखाने के लिए, इंटेंट फ़िल्टर बनाएं.

कार बुलाएं

Google की बोलकर फ़ोन इस्तेमाल करने की सुविधा

  • "मेरे लिए टैक्सी बुक करो"
  • "मुझे कार बुलाओ"

(सिर्फ़ Wear OS के लिए)

टैक्सी को कॉल करने के लिए, ACTION_RESERVE_TAXI_RESERVATION ऐक्शन का इस्तेमाल करें.

ध्यान दें: इस कार्रवाई को पूरा करने से पहले, ऐप्लिकेशन को उपयोगकर्ता से पुष्टि करनी होगी.

कार्रवाई
ACTION_RESERVE_TAXI_RESERVATION
डेटा यूआरआई
कोई नहीं
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>

Maps

मैप ऐप्लिकेशन के लिए, मैप पर किसी जगह की जानकारी दिखाना एक सामान्य कार्रवाई है. नीचे दिए गए सेक्शन में दी गई जानकारी का इस्तेमाल करके, अपने ऐप्लिकेशन की इस कार्रवाई को पूरा करने की क्षमता का विज्ञापन दिखाने के लिए, इंटेंट फ़िल्टर बनाएं.

मैप पर कोई जगह दिखाना

मैप खोलने के लिए, ACTION_VIEW कार्रवाई का इस्तेमाल करें. साथ ही, यहां दिए गए किसी एक स्कीम का इस्तेमाल करके, इंटेंट डेटा में जगह की जानकारी दें.

कार्रवाई
ACTION_VIEW
डेटा यूआरआई स्कीम
geo:latitude,longitude
दिए गए देशांतर और अक्षांश पर मैप दिखाओ.

उदाहरण: "geo:47.6,-122.3"

geo:latitude,longitude?z=zoom
दिए गए अक्षांश और देशांतर पर, मैप को किसी ज़ूम लेवल पर दिखाओ. ज़ूम लेवल 1 पर, पूरी पृथ्वी दिखती है. यह पृथ्वी, दिए गए lat,lng के हिसाब से सेंटर में होती है. सबसे ज़्यादा (सबसे नज़दीकी) ज़ूम लेवल 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 के साथ कोड में बदला जाता है या उन्हें प्लस के निशान (+) से बदल दिया जाता है.

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 कार्रवाई का इस्तेमाल करें. साथ ही, इंटेंट डेटा में फ़ाइल के यूआरआई की जगह की जानकारी दें.

कार्रवाई
ACTION_VIEW
डेटा यूआरआई स्कीम
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>

खोज क्वेरी के आधार पर संगीत चलाना

Google की बोलकर फ़ोन इस्तेमाल करने की सुविधा

  • "माइकल जैक्सन का गाना बिली जीन चलाओ"

खोज क्वेरी के आधार पर संगीत चलाने के लिए, INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH इंटेंट का इस्तेमाल करें. कोई ऐप्लिकेशन, संगीत चलाने के लिए उपयोगकर्ता के बोलकर दिए गए निर्देश के जवाब में इस इंटेंट को ट्रिगर कर सकता है. इस इंटेंट को पाने वाला ऐप्लिकेशन, अपनी इन्वेंट्री में खोज करता है, ताकि मौजूदा कॉन्टेंट को दी गई क्वेरी से मैच किया जा सके. इसके बाद, वह कॉन्टेंट चलाना शुरू कर देता है.

इस इंटेंट में, EXTRA_MEDIA_FOCUS स्ट्रिंग extra शामिल करें. इससे, खोज के लिए इस्तेमाल किए जाने वाले मोड के बारे में पता चलता है. उदाहरण के लिए, खोज मोड यह तय कर सकता है कि खोज किसी कलाकार के नाम के लिए है या गाने के नाम के लिए.

कार्रवाई
INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH
डेटा यूआरआई स्कीम
कोई नहीं
MIME टाइप
कोई नहीं
अन्य सुविधाएं
MediaStore.EXTRA_MEDIA_FOCUS (ज़रूरी)

इससे खोज के मोड के बारे में पता चलता है. जैसे, उपयोगकर्ता किसी कलाकार, एल्बम, गाने या प्लेलिस्ट को खोज रहा है या नहीं. ज़्यादातर सर्च मोड में अतिरिक्त एक्सट्रा लगते हैं. उदाहरण के लिए, अगर उपयोगकर्ता को कोई खास गाना सुनना है, तो इंटेंट में तीन अतिरिक्त चीज़ें शामिल हो सकती हैं: गाने का टाइटल, कलाकार, और एल्बम. इस इंटेंट में, EXTRA_MEDIA_FOCUS की हर वैल्यू के लिए, खोज के इन मोड का इस्तेमाल किया जा सकता है:

कोई भी - "vnd.android.cursor.item/*"

कोई भी संगीत चलाओ. संगीत चलाने वाला ऐप्लिकेशन, स्मार्ट तरीके से संगीत चुनता है. जैसे, उपयोगकर्ता ने पिछली बार जो प्लेलिस्ट सुनी थी उसे चलाना.

अन्य सुविधाएं:

  • QUERY (ज़रूरी है): एक खाली स्ट्रिंग. यह अतिरिक्त हमेशा पुराने सिस्टम के साथ काम करने की सुविधा के लिए उपलब्ध कराया जाता है. जिन मौजूदा ऐप्लिकेशन को खोज के मोड के बारे में जानकारी नहीं है वे इस इंटेंट को बिना किसी स्ट्रक्चर वाली खोज के तौर पर प्रोसेस कर सकते हैं.

अनस्ट्रक्चर्ड - "vnd.android.cursor.item/*"

बिना किसी क्रम के खोज क्वेरी में दिए गए किसी गाने, एल्बम या शैली का संगीत चलाओ. जब ऐप्लिकेशन यह पता नहीं लगा पाते कि उपयोगकर्ता किस तरह का कॉन्टेंट सुनना चाहता है, तब वे इस खोज मोड के साथ इंटेंट जनरेट कर सकते हैं. जब हो सके, तो खोज के ज़्यादा सटीक मोड का इस्तेमाल करें.

अन्य सुविधाएं:

  • QUERY (ज़रूरी है): यह एक स्ट्रिंग होती है. इसमें कलाकार, एल्बम, गाने का नाम या संगीत की शैली का कोई भी कॉम्बिनेशन शामिल होता है.

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

अपनी गतिविधि में इस इंटेंट को हैंडल करते समय, खोज मोड का पता लगाने के लिए, आने वाले Intent में 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 might 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 might 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
डेटा यूआरआई स्कीम
कोई नहीं
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 कार्रवाई का इस्तेमाल करें. साथ ही, यहां दिए गए यूआरआई स्कीम का इस्तेमाल करके कोई फ़ोन नंबर डालें. फ़ोन ऐप्लिकेशन खुलने पर, उसमें फ़ोन नंबर दिखता है. इसके बाद, उपयोगकर्ता को फ़ोन कॉल शुरू करने के लिए, कॉल करें बटन पर टैप करना होगा.

Google की बोलकर फ़ोन इस्तेमाल करने की सुविधा

  • "555-5555 पर कॉल करो"
  • "बॉब को कॉल करो"
  • "वॉयसमेल पर कॉल करो"

सीधे तौर पर फ़ोन कॉल करने के लिए, ACTION_CALL कार्रवाई का इस्तेमाल करें. साथ ही, यूआरआई स्कीम का इस्तेमाल करके फ़ोन नंबर डालें. फ़ोन ऐप्लिकेशन खुलने पर, कॉल शुरू हो जाता है. उपयोगकर्ता को कॉल करें बटन पर टैप करने की ज़रूरत नहीं है.

ACTION_CALL कार्रवाई के लिए, आपको अपनी मेनिफ़ेस्ट फ़ाइल में CALL_PHONE अनुमति जोड़नी होगी:

<uses-permission android:name="android.permission.CALL_PHONE" />
कार्रवाई
  • ACTION_DIAL - इससे डायलर या फ़ोन ऐप्लिकेशन खुलता है.
  • ACTION_CALL - फ़ोन कॉल करता है (इसके लिए CALL_PHONE अनुमति ज़रूरी है)
डेटा यूआरआई स्कीम
  • tel:<phone-number>
  • voicemail:<phone-number>
MIME टाइप
कोई नहीं

मान्य फ़ोन नंबर वे होते हैं जिन्हें IETF RFC 3966 में तय किया गया है. मान्य उदाहरणों में ये शामिल हैं:

  • tel:2125551212
  • tel:(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);
    }
}

यहां खोज करने वाले ऐप्लिकेशन के लिए सामान्य कार्रवाइयां दी गई हैं. साथ ही, हर कार्रवाई को पूरा करने के लिए, आपके ऐप्लिकेशन की क्षमता का विज्ञापन दिखाने के लिए इंटेंट फ़िल्टर बनाने से जुड़ी जानकारी भी दी गई है.

किसी ऐप्लिकेशन का इस्तेमाल करके खोजना

Google की बोलकर फ़ोन इस्तेमाल करने की सुविधा

  • "myvideoapp पर बिल्ली के वीडियो खोजो"

अपने ऐप्लिकेशन के कॉन्टेक्स्ट में खोज की सुविधा देने के लिए, अपने ऐप्लिकेशन में इंटेंट फ़िल्टर का एलान करें. इसके लिए, SEARCH_ACTION ऐक्शन का इस्तेमाल करें. इंटेंट फ़िल्टर का उदाहरण यहां दिया गया है.

ध्यान दें: हमारा सुझाव है कि ऐप्लिकेशन खोज के लिए, SEARCH_ACTION का इस्तेमाल न करें. इसके बजाय, GET_THING ऐक्शन लागू करें, ताकि Google Assistant की इन-ऐप्लिकेशन खोज की सुविधा का इस्तेमाल किया जा सके. ज़्यादा जानकारी के लिए, Google Assistant के ऐप्लिकेशन ऐक्शन से जुड़ा दस्तावेज़ देखें.

कार्रवाई
"com.google.android.gms.actions.SEARCH_ACTION"
Google Voice Actions से की गई सर्च क्वेरी के साथ काम करता है.
अन्य सुविधाएं
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
डेटा यूआरआई स्कीम
कोई नहीं
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

उपलब्ध अतिरिक्त सेटिंग स्क्रीन के बारे में जानने के लिए, Settings दस्तावेज़ देखें .

डेटा यूआरआई स्कीम
कोई नहीं
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);
    }
}

मैसेज भेजने वाले ऐप्लिकेशन

अटैचमेंट के साथ एसएमएस/मल्टीमीडिया मैसेज (एमएमएस) लिखना, टेक्स्ट मैसेजिंग ऐप्लिकेशन के लिए एक सामान्य कार्रवाई है. नीचे दिए गए सेक्शन में दी गई जानकारी का इस्तेमाल करके, अपने ऐप्लिकेशन की इस कार्रवाई को पूरा करने की क्षमता का विज्ञापन दिखाने के लिए, इंटेंट फ़िल्टर बनाएं.

अटैचमेंट के साथ एसएमएस/मल्टीमीडिया मैसेज लिखना

एसएमएस या मल्टीमीडिया मैसेज (एमएमएस) भेजने के लिए, इनमें से किसी एक इंटेंट ऐक्शन का इस्तेमाल करें. साथ ही, मैसेज की जानकारी दें. जैसे, फ़ोन नंबर, विषय, और मैसेज का मुख्य हिस्सा. इसके लिए, यहां दी गई अतिरिक्त कुंजियों का इस्तेमाल करें.

कार्रवाई
ACTION_SENDTO या
ACTION_SEND या
ACTION_SEND_MULTIPLE
डेटा यूआरआई स्कीम
sms:<phone_number>
smsto:<phone_number>
mms:<phone_number>
mmsto:<phone_number>

इन सभी स्कीम को एक ही तरीके से मैनेज किया जाता है.

MIME टाइप
"text/plain"
"image/*"
"video/*"
अन्य सुविधाएं
"subject"
यह मैसेज के विषय के लिए स्ट्रिंग होती है. आम तौर पर, इसका इस्तेमाल सिर्फ़ मल्टीमीडिया मैसेज के लिए किया जाता है.
"sms_body"
टेक्स्ट मैसेज के लिए एक स्ट्रिंग.
EXTRA_STREAM
अटैच करने के लिए इमेज या वीडियो की ओर इशारा करता हुआ Uri. ACTION_SEND_MULTIPLE कार्रवाई का इस्तेमाल करने पर, यह अतिरिक्त ArrayList, Uri ऑब्जेक्ट का होता है. यह अटैच करने के लिए इमेज या वीडियो की ओर इशारा करता है.

उदाहरण के लिए इंटेंट:

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:")  // Only SMS apps respond to this.
        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:"));  // Only SMS apps respond to this.
    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>

ध्यान दें: अगर आपको एसएमएस/एमएमएस मैसेजिंग ऐप्लिकेशन डेवलप करना है, तो आपको कई अन्य कार्रवाइयों के लिए इंटेंट फ़िल्टर लागू करने होंगे. ऐसा करने पर ही, Android 4.4 और इसके बाद के वर्शन पर, डिफ़ॉल्ट एसएमएस ऐप्लिकेशन के तौर पर आपका ऐप्लिकेशन उपलब्ध होगा. ज़्यादा जानकारी के लिए, Telephony पर जाकर दस्तावेज़ देखें.

वेब ब्राउज़र

वेब ब्राउज़र ऐप्लिकेशन के लिए, वेब यूआरएल लोड करना एक सामान्य कार्रवाई है. नीचे दिए गए सेक्शन में दी गई जानकारी का इस्तेमाल करके, अपने ऐप्लिकेशन की इस कार्रवाई को पूरा करने की क्षमता का विज्ञापन दिखाने के लिए, इंटेंट फ़िल्टर बनाएं.

वेब यूआरएल लोड करना

Google की बोलकर फ़ोन इस्तेमाल करने की सुविधा

  • "example.com खोलो"

वेब पेज खोलने के लिए, ACTION_VIEW कार्रवाई का इस्तेमाल करें और इंटेंट डेटा में वेब यूआरएल डालें.

कार्रवाई
ACTION_VIEW
डेटा यूआरआई स्कीम
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>

अहम जानकारी: अगर आपका Android ऐप्लिकेशन, आपकी वेबसाइट की तरह ही काम करता है, तो उन यूआरएल के लिए इंटेंट फ़िल्टर शामिल करें जो आपकी वेबसाइट पर ले जाते हैं. इसके बाद, अगर उपयोगकर्ताओं ने आपका ऐप्लिकेशन इंस्टॉल किया है, तो ईमेल या अन्य वेब पेजों पर मौजूद लिंक, आपके वेब पेज के बजाय आपका Android ऐप्लिकेशन खोलेंगे. ज़्यादा जानने के लिए, Android ऐप्लिकेशन के लिंक मैनेज करना लेख पढ़ें.

Android 12 (एपीआई लेवल 31) से, सामान्य वेब इंटेंट सिर्फ़ तब आपके ऐप्लिकेशन में मौजूद किसी गतिविधि पर रीडायरेक्ट होता है, जब आपके ऐप्लिकेशन को उस वेब इंटेंट में शामिल किसी खास डोमेन के लिए मंज़ूरी मिली हो. अगर आपके ऐप्लिकेशन को डोमेन के लिए मंज़ूरी नहीं मिली है, तो वेब इंटेंट, उपयोगकर्ता के डिफ़ॉल्ट ब्राउज़र ऐप्लिकेशन पर रीडायरेक्ट हो जाएगा.

Android डीबग ब्रिज की मदद से इंटेंट की पुष्टि करना

यह पुष्टि करने के लिए कि आपका ऐप्लिकेशन उन इंटेंट के जवाब देता है जिन्हें आपको सपोर्ट करना है, adb टूल का इस्तेमाल करके खास इंटेंट ट्रिगर किए जा सकते हैं. इसके लिए, यह तरीका अपनाएं:

  1. डेवलपमेंट के लिए, Android डिवाइस सेट अप करें या वर्चुअल डिवाइस का इस्तेमाल करें.
  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. अगर आपने ज़रूरी इंटेंट फ़िल्टर तय किए हैं, तो इंटेंट को मैनेज करें.

ज़्यादा जानकारी के लिए, शेल कमांड जारी करना लेख पढ़ें.