एक इंटेंट आपको किसी अन्य ऐप्लिकेशन में कोई गतिविधि शुरू करने के लिए
जो कार्रवाई आप करना चाहते हैं, जैसे "कोई मैप देखें" या "फ़ोन का
तस्वीर", किसी Intent
ऑब्जेक्ट में. इस तरह का इंटेंट
इसे इंप्लिसिट इंटेंट कहा जाता है, क्योंकि यह ऐप्लिकेशन के बारे में नहीं बताता है
एक कॉम्पोनेंट को शुरू करने के लिए कहा जाता है, लेकिन इसके बजाय एक कार्रवाई तय की जाती है और
कोई डेटा जिससे कार्रवाई करनी है.
startActivity()
को कॉल करने पर
या startActivityForResult()
को इंप्लिसिट इंटेंट के ज़रिए पास कर देते हैं.
समाधान
इंटेंट को ऐसे ऐप्लिकेशन से लिंक करें जो इंटेंट को हैंडल कर सके और
संबंधित Activity
. अगर एक से ज़्यादा ऐप्लिकेशन हैं
जो इंटेंट को हैंडल कर सकता है, सिस्टम उपयोगकर्ता को
चुनें कि कौनसा ऐप्लिकेशन इस्तेमाल करना है.
इस पेज में कई इंप्लिसिट इंटेंट के बारे में बताया गया है, जिनका इस्तेमाल आप परफ़ॉर्म करने के लिए कर सकते हैं सामान्य कार्रवाइयां, जो इंटेंट को हैंडल करने वाले ऐप्लिकेशन के प्रकार के अनुसार व्यवस्थित होती हैं. हर सेक्शन में यह भी दिखाया गया है कि इंटेंट फ़िल्टर का इस्तेमाल करके, अपने ऐप्लिकेशन की कार्रवाई करने की क्षमता का विज्ञापन दें.
चेतावनी: अगर डिवाइस पर ऐसा कोई ऐप्लिकेशन नहीं है जो
एक इंप्लिसिट इंटेंट पाने पर, startActivity()
को कॉल करने पर ऐप्लिकेशन क्रैश हो जाता है. सबसे पहले यह पुष्टि करने के लिए कि
इंटेंट पाने के लिए, कोई ऐप्लिकेशन मौजूद है, तो अपने Intent
ऑब्जेक्ट पर resolveActivity()
को कॉल करें. अगर नतीजा शून्य नहीं है, तो कम से कम
एक ऐसा ऐप्लिकेशन जो इंटेंट को हैंडल कर सकता है. साथ ही, startActivity()
को कॉल करना सुरक्षित है. अगर नतीजा यह है
शून्य, इंटेंट का इस्तेमाल न करें और अगर हो सके, तो
इंटेंट को शुरू करने वाली सुविधा.
अगर आपको इंटेंट या इंटेंट फ़िल्टर बनाने का तरीका नहीं पता है, तो पहले इंटेंट और इंटेंट पढ़ें फ़िल्टर.
अपने डेवलपमेंट से इस पेज पर दिए गए इंटेंट को ट्रिगर करने का तरीका जानने के लिए होस्ट के लिए, Android डीबग की मदद से इंटेंट की पुष्टि करें ब्रिज सेक्शन.
Google बोलकर फ़ोन का इस्तेमाल
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
- यह एक बूलियन है. इससे यह तय होता है कि अलार्म सेट करते समय, काम करने वाले ऐप्लिकेशन को यूज़र इंटरफ़ेस (यूआई) छोड़ना होगा या नहीं. अगर सही है, तो ऐप्लिकेशन को पुष्टि करने वाले किसी भी यूज़र इंटरफ़ेस (यूआई) को बायपास करना होगा और बताया गया अलार्म सेट करना होगा.
इंटेंट का उदाहरण:
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>
टाइमर बनाएं
काउंटडाउन टाइमर बनाने के लिए, 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_OUTPUT
में फ़ोटो या वीडियो को सेव करने के लिए कैमरा
अतिरिक्त.
- कार्रवाई
ACTION_IMAGE_CAPTURE
या
ACTION_VIDEO_CAPTURE
- डेटा यूआरआई स्कीम
- बिलकुल नहीं
- MIME टाइप
- बिलकुल नहीं
- अन्य कॉन्टेंट
-
EXTRA_OUTPUT
- वह जगह जहां Camera ऐप्लिकेशन फ़ोटो सेव करता है या
वीडियो फ़ाइल (
Uri
ऑब्जेक्ट के तौर पर) में एक्सपोर्ट करें.
कैमरा ऐप्लिकेशन के वापस आने पर
अपनी गतिविधि पर फ़ोकस करते हैं—दूसरे शब्दों में, आपके ऐप्लिकेशन को onActivityResult()
कॉलबैक मिलता है—आपको
आपके तय किए गए यूआरआई पर फ़ोटो या वीडियो को ऐक्सेस कर सकता है
EXTRA_OUTPUT
वैल्यू के साथ.
ध्यान दें: जब आप ACTION_IMAGE_CAPTURE
का इस्तेमाल करते/करती हैं
फ़ोटो कैप्चर करने के लिए, कैमरा
Intent
नतीजे में मिली फ़ोटो की डाउनस्केल की गई कॉपी या थंबनेल, नाम के एक अतिरिक्त फ़ील्ड में Bitmap
के तौर पर सेव किए गए
"data"
.
इंटेंट का उदाहरण:
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
के साथ कॉल करें, जिसमें एक अतिरिक्त में कंप्रेस किया गया थंबनेल शामिल हो
नाम "data"
है.
स्टिल इमेज मोड में कैमरा ऐप्लिकेशन चालू करना
स्टिल इमेज मोड में कैमरा ऐप्लिकेशन खोलने के लिए, 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>
वीडियो मोड में कैमरा ऐप्लिकेशन चालू करना
वीडियो मोड में कैमरा ऐप्लिकेशन खोलने के लिए, 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:
यूआरआई. यह जवाब मान्य है
आपके ऐप्लिकेशन को संपर्क की सेवा देने वाले एपीआई का इस्तेमाल करके, उस संपर्क को पढ़ने की कुछ समय की अनुमतियां मिली हुई हैं, भले ही
आपके ऐप्लिकेशन में 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
कार्रवाई करें और MIME टाइप तय करें
कॉन्टेंट के टाइप से जुड़े नहीं हैं, जैसे कि
संपर्क का फ़ोन नंबर पाने के लिए CommonDataKinds.Phone.CONTENT_TYPE
.
ध्यान दें: कई मामलों में, आपके ऐप्लिकेशन में
READ_CONTACTS
किसी खास संपर्क के बारे में खास जानकारी देखने की अनुमति.
अगर आपको किसी संपर्क से सिर्फ़ एक तरह का डेटा वापस पाना है, तो इस तकनीक का इस्तेमाल करके
CONTENT_TYPE
ContactsContract.CommonDataKinds
क्लास इससे ज़्यादा बेहतर है
Contacts.CONTENT_TYPE
का इस्तेमाल करके, जैसा कि पिछले सेक्शन में दिखाया गया है. नतीजे से आपको सीधे तौर पर
संपर्क की सेवा देने वाली कंपनी के लिए ज़्यादा जटिल क्वेरी किए बिना, मनचाहे डेटा का ऐक्सेस पाना.
आपके onActivityResult()
कॉलबैक पर डिलीवर किए गए Intent
नतीजे में, यह जानकारी शामिल होती है
चुने गए संपर्क डेटा की ओर इशारा करता हुआ content:
यूआरआई. यह जवाब मान्य है
आपके ऐप्लिकेशन को READ_CONTACTS
की अनुमति न होने पर भी, आपके ऐप्लिकेशन को संपर्क डेटा को पढ़ने की कुछ समय के लिए अनुमतियां दी गई हैं.
- कार्रवाई
ACTION_PICK
- डेटा यूआरआई स्कीम
- बिलकुल नहीं
- MIME टाइप
-
CommonDataKinds.Phone.CONTENT_TYPE
- फ़ोन नंबर वाले संपर्कों में से चुनें.
CommonDataKinds.Email.CONTENT_TYPE
- ईमेल पते वाले संपर्कों में से चुनें.
CommonDataKinds.StructuredPostal.CONTENT_TYPE
- डाक पते वाले संपर्कों में से चुनें.
या कई अन्य
CONTENT_TYPE
मानों में से एकContactsContract
से कम.
इंटेंट का उदाहरण:
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
- सभी "CC" की स्ट्रिंग अरे पाने वाले लोगों के ईमेल पते.
Intent.EXTRA_BCC
- सभी "BCC" का स्ट्रिंग अरे पाने वाले लोगों के ईमेल पते.
Intent.EXTRA_SUBJECT
- ईमेल के विषय वाली स्ट्रिंग.
Intent.EXTRA_TEXT
- ईमेल के मुख्य हिस्से वाली स्ट्रिंग.
Intent.EXTRA_STREAM
- एक
Uri
, जो अटैचमेंट पर ले जाता हो. अगर इसका इस्तेमाल किया जा रहा है, तोACTION_SEND_MULTIPLE
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है कार्रवाई की है, तो यह एकArrayList
में शामिल है एक से ज़्यादाUri
ऑब्जेक्ट हैं.
इंटेंट का उदाहरण:
Kotlin
fun composeEmail(addresses: Array<String>, subject: String, attachment: Uri) { val intent = Intent(Intent.ACTION_SEND).apply { type = "*/*" putExtra(Intent.EXTRA_EMAIL, addresses) putExtra(Intent.EXTRA_SUBJECT, subject) putExtra(Intent.EXTRA_STREAM, attachment) } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void composeEmail(String[] addresses, String subject, Uri attachment) { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("*/*"); intent.putExtra(Intent.EXTRA_EMAIL, addresses); intent.putExtra(Intent.EXTRA_SUBJECT, subject); intent.putExtra(Intent.EXTRA_STREAM, attachment); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
यह पक्का करने के लिए कि आपके इंटेंट को सिर्फ़ ईमेल ऐप्लिकेशन मैनेज करे, न कि
मैसेज या सोशल मीडिया ऐप्लिकेशन डाउनलोड करें. इसके बाद, ACTION_SENDTO
कार्रवाई करें
और "mailto:"
डेटा स्कीम को शामिल करें, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:
Kotlin
fun composeEmail(addresses: Array<String>, subject: String) { val intent = Intent(Intent.ACTION_SENDTO).apply { data = Uri.parse("mailto:") // Only email apps 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 supportsOpenableColumns
andContentResolver.openFileDescriptor()
. --> <category android:name="android.intent.category.OPENABLE" /> </intent-filter> </activity>
किसी खास तरह की फ़ाइल खोलें
अपने ऐप्लिकेशन में इंपोर्ट की जाने वाली फ़ाइल की कॉपी पाने के बजाय, Android पर ACTION_GET_CONTENT
कार्रवाई का इस्तेमाल करें
4.4 या उसके बाद के वर्शन वाले वर्शन में, आप किसी ऐसी फ़ाइल को खोलने का अनुरोध कर सकते हैं जिसे कोई दूसरा ऐप्लिकेशन मैनेज करता है
ACTION_OPEN_DOCUMENT
कार्रवाई का इस्तेमाल करके और MIME टाइप तय करके.
उपयोगकर्ता को एक नया दस्तावेज़ बनाने की अनुमति देने के लिए, जिस पर आपके ऐप्लिकेशन में लिखा जा सकता है, ACTION_CREATE_DOCUMENT
कार्रवाई का इस्तेमाल करें.
उदाहरण के लिए,
मौजूदा PDF दस्तावेज़ों में से, ACTION_CREATE_DOCUMENT
इंटेंट से उपयोगकर्ता यह चुन सकते हैं कि वे नया दस्तावेज़ कहां बनाना चाहते हैं, जैसे कि किसी दूसरे ऐप्लिकेशन में
जो दस्तावेज़ के स्टोरेज को मैनेज करता है. इसके बाद, आपके ऐप्लिकेशन को उस जगह का यूआरआई लोकेशन मिलता है जहां वह
नया दस्तावेज़ लिख सकता है.
वहीं, इंटेंट आपके onActivityResult()
पर डिलीवर किया गया
ACTION_GET_CONTENT
कार्रवाई का तरीका शायद
किसी भी टाइप का यूआरआई, ACTION_OPEN_DOCUMENT
से मिलने वाला नतीजा इंटेंट है
और ACTION_CREATE_DOCUMENT
चुनी गई फ़ाइल को हमेशा content:
यूआरआई के तौर पर दिखाते हैं, जिसका बैक अप DocumentsProvider
होता है. आप
फ़ाइल में मौजूद openFileDescriptor()
और
DocumentsContract.Document
में दिए गए कॉलम का इस्तेमाल करके इसकी जानकारी के लिए क्वेरी करें.
लौटाए गए यूआरआई से, आपके ऐप्लिकेशन को लंबे समय तक फ़ाइल पढ़ने का ऐक्सेस मिलता है. यह फ़ाइल भी इस फ़ाइल को ऐक्सेस कर सकती है
को दिखेगी. ACTION_OPEN_DOCUMENT
कार्रवाई यह है
यह सुविधा खास तौर पर तब काम आती है, जब आपको अपने ऐप्लिकेशन की कॉपी बनाए बिना किसी मौजूदा फ़ाइल को पढ़ना हो
या जब किसी फ़ाइल को खोलना और उसमें बदलाव करना हो.
उपयोगकर्ता को एक से ज़्यादा फ़ाइलें चुनने के लिए, उन्हें जोड़ने की अनुमति भी दी जा सकती है
इंटेंट के लिए EXTRA_ALLOW_MULTIPLE
, true
पर सेट करें.
अगर उपयोगकर्ता सिर्फ़ एक आइटम चुनता है, तो getData()
से आइटम को वापस लाया जा सकता है.
अगर उपयोगकर्ता एक से ज़्यादा आइटम चुनता है, तो getData()
शून्य दिखाता है और आपको इसके बजाय ऐसा करना चाहिए
ClipData
से हर आइटम को फिर से पाएं
वह ऑब्जेक्ट जो getClipData()
से मिला.
ध्यान दें: आपके इंटेंट में MIME टाइप होना चाहिए और
CATEGORY_OPENABLE
कैटगरी का एलान ज़रूरी है. अगर आपने
ठीक है, तो आप
EXTRA_MIME_TYPES
अतिरिक्त—अगर आप ऐसा करते हैं, तो आपको
setType()
में "*/*"
में प्राइमरी MIME टाइप.
- कार्रवाई
ACTION_OPEN_DOCUMENT
या
ACTION_CREATE_DOCUMENT
- डेटा यूआरआई स्कीम
- बिलकुल नहीं
- MIME टाइप
- उस फ़ाइल टाइप से जुड़ा MIME टाइप जिसे उपयोगकर्ता को चुनना है.
- अन्य कॉन्टेंट
-
EXTRA_MIME_TYPES
- आपके ऐप्लिकेशन में जिस तरह की फ़ाइलें हैं उनसे जुड़े MIME टाइप का कलेक्शन
अनुरोध कर रहा है. अगर आप इस अतिरिक्त का इस्तेमाल करते हैं, तो आपको प्राथमिक MIME टाइप
"*/*"
के लिएsetType()
. EXTRA_ALLOW_MULTIPLE
- यह एक बूलियन है. इससे पता चलता है कि उपयोगकर्ता एक बार में एक से ज़्यादा फ़ाइलें चुन सकता है या नहीं.
EXTRA_TITLE
- यह बताने के लिए
ACTION_CREATE_DOCUMENT
के साथ इस्तेमाल करने के लिए फ़ाइल नाम. EXTRA_LOCAL_ONLY
- यह एक बूलियन है. इससे यह पता चलता है कि दिखाई गई फ़ाइल सीधे तौर पर से डाउनलोड करने की ज़रूरत नहीं होती.
- कैटगरी
-
CATEGORY_OPENABLE
- सिर्फ़ "ओपनेबल" वापस करने के लिए ऐसी फ़ाइलें जिन्हें फ़ाइल स्ट्रीम के तौर पर दिखाया जा सकता है
openFileDescriptor()
के साथ.
फ़ोटो पाने के इंटेंट का उदाहरण:
Kotlin
const val REQUEST_IMAGE_OPEN = 1 fun selectImage2() { val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply { type = "image/*" addCategory(Intent.CATEGORY_OPENABLE) } // Only the system receives the ACTION_OPEN_DOCUMENT, so no need to test. startActivityForResult(intent, REQUEST_IMAGE_OPEN) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { if (requestCode == REQUEST_IMAGE_OPEN && resultCode == Activity.RESULT_OK) { val fullPhotoUri: Uri = data.data // Do work with full size photo saved at fullPhotoUri. ... } }
Java
static final int REQUEST_IMAGE_OPEN = 1; public void selectImage() { Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.setType("image/*"); intent.addCategory(Intent.CATEGORY_OPENABLE); // Only the system receives the ACTION_OPEN_DOCUMENT, so no need to test. startActivityForResult(intent, REQUEST_IMAGE_OPEN); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_IMAGE_OPEN && resultCode == RESULT_OK) { Uri fullPhotoUri = data.getData(); // Do work with full size photo saved at fullPhotoUri. ... } }
तीसरे पक्ष के ऐप्लिकेशन,
ACTION_OPEN_DOCUMENT
कार्रवाई. इसके बजाय, सिस्टम को यह जानकारी मिलती है
इंटेंट और यूनिफ़ाइड यूज़र इंटरफ़ेस में अलग-अलग ऐप्लिकेशन की सभी फ़ाइलें दिखाता है.
इस यूज़र इंटरफ़ेस (यूआई) में अपने ऐप्लिकेशन की फ़ाइलें उपलब्ध कराने और अन्य ऐप्लिकेशन को उन्हें खोलने देने के लिए, आपको ये चीज़ें लागू करनी होंगी
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
- डेटा यूआरआई
- बिलकुल नहीं
- 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 में पूरे Earth को दिखाया गया है, जो दिए गए 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>
किसी खोज क्वेरी के आधार पर संगीत चलाना
किसी खोज क्वेरी पर आधारित संगीत चलाने के लिए,
INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH
इंटेंट. ऐप्लिकेशन में आग लग सकती है
यह इंटेंट, संगीत चलाने के लिए उपयोगकर्ता के बोले गए निर्देश के जवाब में होता है. इसके लिए, न्योता पाने वाला ऐप्लिकेशन
इंटेंट, दी गई क्वेरी से मौजूदा कॉन्टेंट को मैच करने के लिए अपनी इन्वेंट्री में खोज करता है और
कॉन्टेंट को चलाना शुरू कर देता है.
इस इंटेंट में EXTRA_MEDIA_FOCUS
स्ट्रिंग शामिल करें
अतिरिक्त, जो मनचाहे खोज मोड के बारे में बताता है. उदाहरण के लिए, सर्च मोड यह तय कर सकता है कि
किसी कलाकार का नाम या गाने का नाम खोजना होता है.
- कार्रवाई
INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH
- डेटा यूआरआई स्कीम
- बिलकुल नहीं
- MIME टाइप
- बिलकुल नहीं
- अन्य कॉन्टेंट
-
MediaStore.EXTRA_MEDIA_FOCUS
(ज़रूरी)-
यह खोज मोड को दिखाता है: क्या उपयोगकर्ता किसी खास कलाकार, एल्बम, गाने, का इस्तेमाल करें. खोज के ज़्यादातर मोड में आपको कुछ अतिरिक्त सुविधाएं मिलती हैं. उदाहरण के लिए, अगर उपयोगकर्ता अगर किसी खास गाने को सुनने में दिलचस्पी है, तो इंटेंट में तीन अतिरिक्त चीज़ें हो सकती हैं: गाने का टाइटल, कलाकार, और एल्बम. यह इंटेंट
EXTRA_MEDIA_FOCUS
की हर वैल्यू:कोई भी -
"vnd.android.cursor.item/*"
-
कोई भी संगीत चलाएँ. जिस ऐप्लिकेशन में इस ऐप्लिकेशन को ऐक्सेस किया जा रहा है वह स्मार्ट विकल्प के हिसाब से संगीत चलाता है, जैसे उपयोगकर्ता ने आखिरी प्लेलिस्ट को सुना.
अतिरिक्त सुविधाएं:
QUERY
(ज़रूरी है): एक खाली स्ट्रिंग. यह अतिरिक्त हमेशा पुराने सिस्टम के साथ काम करने की सुविधा के लिए दिया गया है. जिन मौजूदा ऐप्लिकेशन को खोज मोड के बारे में जानकारी नहीं है वे इस इंटेंट को अनस्ट्रक्चर्ड खोज के तौर पर प्रोसेस करें.
बिना स्ट्रक्चर किए गए -
"vnd.android.cursor.item/*"
-
बिना स्ट्रक्चर वाली खोज क्वेरी से कोई गाना, एल्बम या शैली चलाना. ऐप्लिकेशन, इस खोज मोड के साथ एक इंटेंट, जब वे उपयोगकर्ता की पसंद के कॉन्टेंट की पहचान नहीं कर पाते सुनें. जब हो सके, तब खोज के लिए ज़्यादा खास मोड का इस्तेमाल करें.
अतिरिक्त सुविधाएं:
QUERY
(ज़रूरी है): ऐसी स्ट्रिंग जिसमें सभी कॉम्बिनेशन शामिल हों कलाकार, एल्बम, गाने का नाम या शैली.
-
किसी खास शैली का संगीत चलाना.
अतिरिक्त सुविधाएं:
"android.intent.extra.genre"
(ज़रूरी है) - शैली.QUERY
(ज़रूरी है): शैली. यह अतिरिक्त जानकारी हमेशा दी जाती है का इस्तेमाल करें. जिन मौजूदा ऐप्लिकेशन को खोज मोड के बारे में जानकारी नहीं है वे प्रोसेस कर सकते हैं इस इंटेंट को असंरचित खोज के रूप में देखा जा सकता है.
कलाकार -
Audio.Artists.ENTRY_CONTENT_TYPE
-
किसी खास कलाकार का संगीत चलाना.
अतिरिक्त सुविधाएं:
EXTRA_MEDIA_ARTIST
(ज़रूरी है): कलाकार की जानकारी."android.intent.extra.genre"
: शैली.QUERY
(ज़रूरी है): एक ऐसी स्ट्रिंग जिसमें कलाकार या शैली के बारे में ज़्यादा जानें. यह अतिरिक्त सुविधा हमेशा पुराने सिस्टम के साथ काम करने की सुविधा के लिए दी जाती है. जिन मौजूदा ऐप्लिकेशन को खोज मोड के बारे में जानकारी नहीं है वे इस इंटेंट को अनस्ट्रक्चर्ड तरीके से प्रोसेस कर सकते हैं खोजें.
एल्बम -
Audio.Albums.ENTRY_CONTENT_TYPE
-
किसी खास एल्बम का संगीत चलाना.
अतिरिक्त सुविधाएं:
EXTRA_MEDIA_ALBUM
(ज़रूरी है): एल्बम.EXTRA_MEDIA_ARTIST
: कलाकार."android.intent.extra.genre"
: शैली.QUERY
(ज़रूरी है): एक ऐसी स्ट्रिंग जिसमें या कलाकार के तौर पर शामिल होते हैं. यह अतिरिक्त सुविधा हमेशा पीछे जाने के लिए दी जाती है साथ काम करता है. जिन मौजूदा ऐप्लिकेशन को खोज मोड के बारे में नहीं पता है वे इस इंटेंट को असंरचित खोज.
गाना -
"vnd.android.cursor.item/audio"
-
कोई गाना चलाना.
अतिरिक्त सुविधाएं:
EXTRA_MEDIA_ALBUM
: एल्बम.EXTRA_MEDIA_ARTIST
: कलाकार."android.intent.extra.genre"
: शैली.EXTRA_MEDIA_TITLE
(ज़रूरी है): गाने का नाम.QUERY
(ज़रूरी है): एक ऐसी स्ट्रिंग जिसमें एल्बम, कलाकार, शैली या टाइटल. यह अतिरिक्त सुविधा हमेशा इसके लिए दी जाती है पुराने सिस्टम के साथ काम करने की सुविधा. जिन मौजूदा ऐप्लिकेशन को खोज मोड के बारे में जानकारी नहीं है वे इस प्रोसेस को प्रोसेस कर सकते हैं इंटेंट का इस्तेमाल करें.
प्लेलिस्ट -
Audio.Playlists.ENTRY_CONTENT_TYPE
- अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
कोई ऐसी प्लेलिस्ट या ऐसी प्लेलिस्ट चलाना जो बताई गई कुछ शर्तों से मेल खाती हो इस्तेमाल करते हैं.
अतिरिक्त सुविधाएं:
EXTRA_MEDIA_ALBUM
: एल्बम.EXTRA_MEDIA_ARTIST
: कलाकार."android.intent.extra.genre"
: शैली."android.intent.extra.playlist"
: प्लेलिस्ट.EXTRA_MEDIA_TITLE
: प्लेलिस्ट के गाने का नाम आधारित है.QUERY
(ज़रूरी है): ऐसी स्ट्रिंग जिसमें सभी कॉम्बिनेशन शामिल हों एल्बम, कलाकार, शैली, प्लेलिस्ट या टाइटल के बारे में जानकारी. यह अतिरिक्त हमेशा पुराने सिस्टम के साथ काम करने की सुविधा के लिए दिया गया है. जिन मौजूदा ऐप्लिकेशन को खोज मोड के बारे में जानकारी नहीं है वे इस इंटेंट को अनस्ट्रक्चर्ड खोज के तौर पर प्रोसेस करें.
इंटेंट का उदाहरण:
अगर उपयोगकर्ता किसी कलाकार का संगीत सुनना चाहता है, तो खोज ऐप्लिकेशन यह इंटेंट:
Kotlin
fun playSearchArtist(artist: String) { val intent = Intent(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH).apply { putExtra(MediaStore.EXTRA_MEDIA_FOCUS, MediaStore.Audio.Artists.ENTRY_CONTENT_TYPE) putExtra(MediaStore.EXTRA_MEDIA_ARTIST, artist) putExtra(SearchManager.QUERY, artist) } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
Java
public void playSearchArtist(String artist) { Intent intent = new Intent(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH); intent.putExtra(MediaStore.EXTRA_MEDIA_FOCUS, MediaStore.Audio.Artists.ENTRY_CONTENT_TYPE); intent.putExtra(MediaStore.EXTRA_MEDIA_ARTIST, artist); intent.putExtra(SearchManager.QUERY, artist); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
इंटेंट फ़िल्टर का उदाहरण:
<activity ...> <intent-filter> <action android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
अपनी गतिविधि में इस इंटेंट का इस्तेमाल करते समय,
इनकमिंग में EXTRA_MEDIA_FOCUS
और
खोज मोड तय करने के लिए Intent
. आपकी गतिविधि की पहचान होने के बाद
खोज मोड, उस विशेष खोज मोड के लिए अतिरिक्त अतिरिक्त के मानों को पढ़ें.
इस जानकारी के साथ, आपका ऐप्लिकेशन
ऐसा कॉन्टेंट जो खोज क्वेरी से मेल खाता हो. यह नीचे दिए गए उदाहरण में दिखाया गया है.
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
- नोट के टेक्स्ट को दिखाने वाली स्ट्रिंग.
-
- कार्रवाई
-
ACTION_DIAL
- डायलर या फ़ोन ऐप्लिकेशन खोलता है.ACTION_CALL
- फ़ोन कॉल करे (यह ज़रूरी हैCALL_PHONE
अनुमति)
- डेटा यूआरआई स्कीम
-
tel:<phone-number>
voicemail:<phone-number>
- MIME टाइप
- बिलकुल नहीं
tel:2125551212
tel:(212) 555 1212
- कार्रवाई
-
"com.google.android.gms.actions.SEARCH_ACTION"
- Google Voice कार्रवाइयों से खोज क्वेरी का समर्थन करें.
- अन्य कॉन्टेंट
-
QUERY
- ऐसी स्ट्रिंग जिसमें खोज क्वेरी होती है.
- कार्रवाई
ACTION_WEB_SEARCH
- डेटा यूआरआई स्कीम
- बिलकुल नहीं
- MIME टाइप
- बिलकुल नहीं
- अन्य कॉन्टेंट
-
SearchManager.QUERY
- खोज स्ट्रिंग.
- कार्रवाई
-
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 टाइप
- बिलकुल नहीं
- कार्रवाई
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
ऑब्जेक्ट, जो अटैच करने के लिए इमेज या वीडियो की ओर इशारा करते हैं.
- कार्रवाई
ACTION_VIEW
- डेटा यूआरआई स्कीम
http:<URL>
https:<URL>
- MIME टाइप
-
"text/plain"
"text/html"
"application/xhtml+xml"
"application/vnd.wap.xhtml+xml"
- डेवलपमेंट के लिए Android डिवाइस सेट अप करना या किसी वर्चुअल डिवाइस का इस्तेमाल करें.
- अपने ऐप्लिकेशन का ऐसा वर्शन इंस्टॉल करें जो उन इंटेंट को हैंडल करता हो जिनका आपको इस्तेमाल करना है.
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
- अगर आपको ज़रूरी इंटेंट फ़िल्टर तय करने हैं, तो इंटेंट को हैंडल करें.
इंटेंट का उदाहरण:
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
कार्रवाई का इस्तेमाल करें. इसके बाद, फ़ोन नंबर डालें
नीचे दी गई यूआरआई स्कीम है. फ़ोन ऐप्लिकेशन खुलने पर, यह फ़ोन नंबर दिखाता है,
साथ ही, उपयोगकर्ता को फ़ोन कॉल शुरू करने के लिए कॉल करें बटन पर टैप करना होगा.
सीधे फ़ोन कॉल करने के लिए, ACTION_CALL
कार्रवाई का इस्तेमाल करें
और निम्नलिखित यूआरआई स्कीम का इस्तेमाल करके फ़ोन नंबर तय करें. फ़ोन ऐप्लिकेशन खुलने पर, वह
फ़ोन कॉल शुरू करता है. उपयोगकर्ता को कॉल करें बटन पर टैप करने की ज़रूरत नहीं है.
ACTION_CALL
कार्रवाई के लिए आपको
आपकी मेनिफ़ेस्ट फ़ाइल के लिए CALL_PHONE
अनुमति:
<uses-permission android:name="android.permission.CALL_PHONE" />
मान्य टेलीफ़ोन नंबर वे होते हैं जिन्हें आईईटीएफ़ आरएफ़सी 3966 में. मान्य उदाहरणों में ये शामिल हैं:
फ़ोन ऐप्लिकेशन का डायलर, स्कीम को नॉर्मलाइज़ कर सकता है, जैसे
टेलीफ़ोन नंबर. इसलिए, यहां बताई गई स्कीम की
खास तौर पर ज़रूरत
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); } }
खोजें
खोज ऐप्लिकेशन के लिए सामान्य कार्रवाइयां यहां दी गई हैं. इनमें, आपकी ज़रूरी जानकारी भी शामिल है इंटेंट फ़िल्टर बनाएं, ताकि आपके ऐप्लिकेशन की हर कार्रवाई करने की क्षमता का विज्ञापन किया जा सके.
किसी खास ऐप्लिकेशन का इस्तेमाल करके खोजना
अपने ऐप्लिकेशन के हिसाब से खोज की सुविधा का इस्तेमाल करने के लिए, अपने ऐप्लिकेशन में इंटेंट फ़िल्टर का एलान करें.
SEARCH_ACTION
कार्रवाई, जैसा कि नीचे दिए गए इंटेंट फ़िल्टर के उदाहरण में दिखाया गया है.
ध्यान दें: हम ऐप्लिकेशन खोज के लिए, SEARCH_ACTION
का इस्तेमाल करने का सुझाव नहीं देते.
इसके बजाय,
GET_THING
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
के लिए Google Assistant की बिल्ट-इन सुविधा का इस्तेमाल करें. ज़्यादा जानकारी के लिए, यह देखें
Google Assistant
ऐप्लिकेशन की खास सुविधाओं के लिए कार्रवाइयों से जुड़ा दस्तावेज़.
इंटेंट फ़िल्टर का उदाहरण:
<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
और.
इंटेंट का उदाहरण:
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); } }
सेटिंग
अगर आपके ऐप्लिकेशन के लिए उपयोगकर्ता को कुछ बदलाव करने की ज़रूरत हो, तो सिस्टम के सेटिंग ऐप्लिकेशन में स्क्रीन खोलने के लिए, इनमें से किसी एक इंटेंट कार्रवाई का इस्तेमाल करें:
इंटेंट का उदाहरण:
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); } }
मैसेज भेजने वाले ऐप्लिकेशन
टेक्स्ट मैसेजिंग ऐप्लिकेशन में, मैसेज (एसएमएस)/मल्टीमीडिया मैसेज (एमएमएस) को अटैचमेंट के साथ लिखना एक आम कार्रवाई है. इंटेंट फ़िल्टर बनाएं, ताकि आपका ऐप्लिकेशन इस कार्रवाई को कर सके. इसके लिए, जानकारी दी गई है.
अटैचमेंट के साथ एसएमएस या मल्टीमीडिया मैसेज (एमएमएस) लिखें
मैसेज (एसएमएस) या मल्टीमीडिया मैसेज (एमएमएस) भेजने के लिए, इनमें से किसी एक इंटेंट कार्रवाई का इस्तेमाल करें और मैसेज बताएं नीचे दी गई अतिरिक्त कुंजियों का इस्तेमाल करके, फ़ोन नंबर, विषय, और मैसेज का मुख्य हिस्सा जैसी जानकारी.
इंटेंट का उदाहरण:
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
पर है.
वेब ब्राउज़र
वेब ब्राउज़र ऐप्लिकेशन के लिए, वेब यूआरएल लोड करना एक आम कार्रवाई है. इंटेंट फ़िल्टर बनाएं, ताकि आपका ऐप्लिकेशन इस कार्रवाई को कर सके. इसके लिए, जानकारी दी गई है.
वेब यूआरएल लोड करें
वेब पेज खोलने के लिए, ACTION_VIEW
कार्रवाई का इस्तेमाल करें
और इंटेंट डेटा में वेब यूआरएल तय करें.
इंटेंट का उदाहरण:
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
टूल की मदद से खास इंटेंट को ट्रिगर किया जा सकता है.
निम्न:
ज़्यादा जानकारी के लिए, यह देखें शेल कमांड जारी करें.