একটি অভিপ্রায় আপনাকে একটি Intent
অবজেক্টে "একটি মানচিত্র দেখুন" বা "একটি ছবি তুলুন" এর মতো একটি কর্মের বর্ণনা দিয়ে অন্য অ্যাপে একটি কার্যকলাপ শুরু করতে দেয়৷ এই ধরনের অভিপ্রায়কে একটি অন্তর্নিহিত অভিপ্রায় বলা হয় কারণ এটি শুরু করার জন্য অ্যাপের উপাদান নির্দিষ্ট করে না, বরং একটি ক্রিয়া নির্দিষ্ট করে এবং কিছু ডেটা প্রদান করে যার সাহায্যে ক্রিয়াটি সম্পাদন করা যায়।
আপনি যখন startActivity()
বা startActivityForResult()
কল করেন এবং এটিকে একটি অন্তর্নিহিত অভিপ্রায় পাস করেন, তখন সিস্টেমটি অভিপ্রায়টি পরিচালনা করতে পারে এমন একটি অ্যাপে অভিপ্রায় সমাধান করে এবং এর সংশ্লিষ্ট Activity
শুরু করে। যদি একাধিক অ্যাপ থাকে যা অভিপ্রায় পরিচালনা করতে পারে, তাহলে সিস্টেমটি ব্যবহারকারীকে একটি ডায়ালগ উপস্থাপন করে কোন অ্যাপটি ব্যবহার করতে হবে তা বেছে নিতে।
এই পৃষ্ঠাটি বেশ কয়েকটি অন্তর্নিহিত অভিপ্রায় বর্ণনা করে যা আপনি অভিপ্রায় পরিচালনা করে এমন অ্যাপের ধরন দ্বারা সংগঠিত সাধারণ ক্রিয়া সম্পাদন করতে ব্যবহার করতে পারেন৷ প্রতিটি বিভাগ এছাড়াও দেখায় কিভাবে আপনি একটি অভিপ্রায় ফিল্টার তৈরি করতে পারেন আপনার অ্যাপ্লিকেশানের কার্য সম্পাদন করার ক্ষমতার বিজ্ঞাপন দিতে৷
সতর্কতা: যদি ডিভাইসে এমন কোনো অ্যাপ না থাকে যা একটি অন্তর্নিহিত উদ্দেশ্য গ্রহণ করতে পারে, একটি অ্যাপটি startActivity()
কল করলে ক্র্যাশ হয়ে যায়। অভিপ্রায় পাওয়ার জন্য একটি অ্যাপ বিদ্যমান আছে কিনা তা যাচাই করতে, আপনার Intent
অবজেক্টে resolveActivity()
এ কল করুন। যদি ফলাফলটি নন-নাল হয়, তাহলে অন্তত একটি অ্যাপ আছে যা উদ্দেশ্যটি পরিচালনা করতে পারে এবং startActivity()
কল করা নিরাপদ। যদি ফলাফলটি শূন্য হয়, তাহলে অভিপ্রায়টি ব্যবহার করবেন না এবং, যদি সম্ভব হয়, অভিপ্রায়টি আহ্বান করে এমন বৈশিষ্ট্যটি অক্ষম করুন৷
আপনি যদি ইন্টেন্ট বা ইন্টেন্ট ফিল্টার তৈরি করতে জানেন না, তাহলে প্রথমে ইনটেন্ট এবং ইনটেন্ট ফিল্টার পড়ুন।
আপনার ডেভেলপমেন্ট হোস্ট থেকে এই পৃষ্ঠায় তালিকাভুক্ত ইন্টেন্টগুলি কীভাবে ফায়ার করতে হয় তা শিখতে, Android ডিবাগ ব্রিজ বিভাগ দিয়ে ইন্টেন্ট যাচাই করুন।
Google ভয়েস অ্যাকশন
Google ভয়েস অ্যাকশন ভয়েস কমান্ডের প্রতিক্রিয়া হিসাবে এই পৃষ্ঠায় তালিকাভুক্ত কিছু উদ্দেশ্যগুলিকে বহিস্কার করে৷ আরও তথ্যের জন্য, সিস্টেম ভয়েস অ্যাকশনের সাথে শুরু করুন দেখুন।
অ্যালার্ম ঘড়ি
নিম্নলিখিতগুলি অ্যালার্ম ঘড়ি অ্যাপগুলির জন্য সাধারণ ক্রিয়াকলাপগুলি সহ, প্রতিটি ক্রিয়া সম্পাদন করার জন্য আপনার অ্যাপের ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করার জন্য প্রয়োজনীয় তথ্য সহ৷
একটি অ্যালার্ম তৈরি করুন
একটি নতুন অ্যালার্ম তৈরি করতে, ACTION_SET_ALARM
অ্যাকশনটি ব্যবহার করুন এবং নিম্নলিখিত অতিরিক্তগুলি ব্যবহার করে সময় এবং বার্তার মতো অ্যালার্মের বিবরণ নির্দিষ্ট করুন৷
দ্রষ্টব্য: Android 2.3 (API লেভেল 9) এবং তার নিচের সংস্করণে শুধুমাত্র ঘন্টা, মিনিট এবং বার্তা অতিরিক্ত উপলব্ধ। অন্যান্য অতিরিক্তগুলি প্ল্যাটফর্মের উচ্চতর সংস্করণে উপলব্ধ।
- অ্যাকশন
-
ACTION_SET_ALARM
- ডেটা URI
- কোনোটিই নয়
- MIME প্রকার
- কোনোটিই নয়
- অতিরিক্ত
-
EXTRA_HOUR
- অ্যালার্ম জন্য ঘন্টা.
-
EXTRA_MINUTES
- অ্যালার্ম জন্য মিনিট.
-
EXTRA_MESSAGE
- অ্যালার্ম সনাক্ত করার জন্য একটি কাস্টম বার্তা।
-
EXTRA_DAYS
- প্রতিটি সপ্তাহের দিন সহ একটি
ArrayList
যেখানে এই অ্যালার্ম পুনরাবৃত্তি হয়। প্রতিটি দিন অবশ্যইCalendar
ক্লাস থেকে একটি পূর্ণসংখ্যা দিয়ে ঘোষণা করতে হবে, যেমনMONDAY
।এককালীন অ্যালার্মের জন্য, এই অতিরিক্ত নির্দিষ্ট করবেন না।
-
EXTRA_RINGTONE
- একটি
content:
ইউআরআই অ্যালার্মের সাথে ব্যবহার করার জন্য একটি রিংটোন বা রিংটোন ছাড়াইVALUE_RINGTONE_SILENT
নির্দিষ্ট করে৷ডিফল্ট রিংটোন ব্যবহার করতে, এই অতিরিক্ত নির্দিষ্ট করবেন না।
-
EXTRA_VIBRATE
- এই অ্যালার্মের জন্য কম্পন করতে হবে কিনা তা নির্দিষ্ট করে একটি বুলিয়ান৷
-
EXTRA_SKIP_UI
- অ্যালার্ম সেট করার সময় রেসপন্সিং অ্যাপটিকে তার UI এড়িয়ে যেতে হবে কিনা তা নির্দিষ্ট করে একটি বুলিয়ান। সত্য হলে, অ্যাপটিকে অবশ্যই যেকোনো নিশ্চিতকরণ UI বাইপাস করতে হবে এবং নির্দিষ্ট অ্যালার্ম সেট করতে হবে।
-
উদাহরণের উদ্দেশ্য:
কোটলিন
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) } }
জাভা
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
অনুমতি থাকতে হবে:
android:name="com.android.alarm.permission.SET_ALARM" />
উদাহরন ফিল্টার:
...> android:name="android.intent.action.SET_ALARM" /> android:name="android.intent.category.DEFAULT" />
একটি টাইমার তৈরি করুন
একটি কাউন্টডাউন টাইমার তৈরি করতে, ACTION_SET_TIMER
অ্যাকশনটি ব্যবহার করুন এবং নিম্নলিখিত অতিরিক্তগুলি ব্যবহার করে সময়কালের মতো টাইমারের বিবরণ নির্দিষ্ট করুন৷
দ্রষ্টব্য: এই উদ্দেশ্যটি Android 4.4 (API স্তর 19) এবং উচ্চতর সংস্করণে উপলব্ধ।
- অ্যাকশন
-
ACTION_SET_TIMER
- ডেটা URI
- কোনোটিই নয়
- MIME প্রকার
- কোনোটিই নয়
- অতিরিক্ত
-
EXTRA_LENGTH
- সেকেন্ডে টাইমারের দৈর্ঘ্য।
-
EXTRA_MESSAGE
- টাইমার সনাক্ত করার জন্য একটি কাস্টম বার্তা।
-
EXTRA_SKIP_UI
- টাইমার সেট করার সময় সাড়া প্রদানকারী অ্যাপটিকে তার UI এড়িয়ে যেতে হবে কিনা তা নির্দিষ্ট করে একটি বুলিয়ান। সত্য হলে, অ্যাপটিকে অবশ্যই যেকোনো নিশ্চিতকরণ UI বাইপাস করতে হবে এবং নির্দিষ্ট টাইমার চালু করতে হবে।
-
উদাহরণের উদ্দেশ্য:
কোটলিন
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) } }
জাভা
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
অনুমতি থাকতে হবে:
android:name="com.android.alarm.permission.SET_ALARM" />
উদাহরন ফিল্টার:
...> android:name="android.intent.action.SET_TIMER" /> android:name="android.intent.category.DEFAULT" />
সমস্ত অ্যালার্ম দেখান
অ্যালার্মের তালিকা দেখাতে, ACTION_SHOW_ALARMS
অ্যাকশন ব্যবহার করুন।
যদিও অনেক অ্যাপ্লিকেশানগুলি এই অভিপ্রায়কে আমন্ত্রণ জানায় না, যেহেতু এটি প্রাথমিকভাবে সিস্টেম অ্যাপ্লিকেশানগুলির দ্বারা ব্যবহৃত হয়, যে কোনও অ্যাপ্লিকেশান যা অ্যালার্ম ঘড়ি হিসাবে আচরণ করে এই অভিপ্রায় ফিল্টারটি প্রয়োগ করতে পারে এবং বর্তমান অ্যালার্মগুলির তালিকা দেখিয়ে প্রতিক্রিয়া জানাতে পারে৷
দ্রষ্টব্য: এই উদ্দেশ্যটি Android 4.4 (API স্তর 19) এবং উচ্চতর সংস্করণে উপলব্ধ।
- অ্যাকশন
-
ACTION_SHOW_ALARMS
- ডেটা URI
- কোনোটিই নয়
- MIME প্রকার
- কোনোটিই নয়
উদাহরন ফিল্টার:
...> android:name="android.intent.action.SHOW_ALARMS" /> android:name="android.intent.category.DEFAULT" />
ক্যালেন্ডার
একটি ইভেন্ট যোগ করা ক্যালেন্ডার অ্যাপের জন্য একটি সাধারণ কাজ। নিম্নলিখিত বিভাগে তথ্য ব্যবহার করে এই ক্রিয়া সম্পাদন করার জন্য আপনার অ্যাপের ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করুন৷
একটি ক্যালেন্ডার ইভেন্ট যোগ করুন
ব্যবহারকারীর ক্যালেন্ডারে একটি নতুন ইভেন্ট যোগ করতে, ACTION_INSERT
অ্যাকশন ব্যবহার করুন এবং Events.CONTENT_URI
ব্যবহার করে ডেটা URI নির্দিষ্ট করুন। তারপরে আপনি নিম্নলিখিত অতিরিক্তগুলি ব্যবহার করে বিভিন্ন ইভেন্টের বিবরণ নির্দিষ্ট করতে পারেন।
- অ্যাকশন
-
ACTION_INSERT
- ডেটা URI
-
Events.CONTENT_URI
- MIME প্রকার
-
"vnd.android.cursor.dir/event"
- অতিরিক্ত
-
EXTRA_EVENT_ALL_DAY
- এটি একটি সারাদিনের ইভেন্ট কিনা তা নির্দিষ্ট করে একটি বুলিয়ান৷
-
EXTRA_EVENT_BEGIN_TIME
- ইভেন্টের শুরুর সময় (যুগ থেকে মিলিসেকেন্ড)।
-
EXTRA_EVENT_END_TIME
- ইভেন্টের শেষ সময় (যুগ থেকে মিলিসেকেন্ড)।
-
TITLE
- অনুষ্ঠানের শিরোনাম।
-
DESCRIPTION
- ঘটনার বিবরণ।
-
EVENT_LOCATION
- অনুষ্ঠানের অবস্থান।
-
EXTRA_EMAIL
- ইমেল ঠিকানাগুলির একটি কমা দ্বারা পৃথক করা তালিকা যা আমন্ত্রিতদের নির্দিষ্ট করে৷
CalendarContract.EventsColumns
ক্লাসে সংজ্ঞায়িত ধ্রুবকগুলি ব্যবহার করে আরও অনেক ইভেন্টের বিবরণ নির্দিষ্ট করা যেতে পারে।-
উদাহরণের উদ্দেশ্য:
কোটলিন
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) } }
জাভা
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); } }
উদাহরন ফিল্টার:
...> android:name="android.intent.action.INSERT" /> android:mimeType="vnd.android.cursor.dir/event" /> android:name="android.intent.category.DEFAULT" />
ক্যামেরা
নিম্নলিখিতগুলি ক্যামেরা অ্যাপগুলির জন্য সাধারণ ক্রিয়াকলাপগুলি সহ, প্রতিটি ক্রিয়া সম্পাদন করার জন্য আপনার অ্যাপের ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করার জন্য প্রয়োজনীয় তথ্য সহ।
একটি ছবি বা ভিডিও ক্যাপচার এবং এটি ফেরত
একটি ক্যামেরা অ্যাপ খুলতে এবং ফলস্বরূপ ফটো বা ভিডিও পেতে, ACTION_IMAGE_CAPTURE
বা ACTION_VIDEO_CAPTURE
অ্যাকশন ব্যবহার করুন৷ এছাড়াও EXTRA_OUTPUT
অতিরিক্ত তে আপনি যেখানে ক্যামেরাটি ফটো বা ভিডিও সংরক্ষণ করতে চান সেই URI অবস্থান নির্দিষ্ট করুন৷
- অ্যাকশন
-
ACTION_IMAGE_CAPTURE
বা
ACTION_VIDEO_CAPTURE
- ডেটা ইউআরআই স্কিম
- কোনোটিই নয়
- MIME প্রকার
- কোনোটিই নয়
- অতিরিক্ত
-
EXTRA_OUTPUT
- URI অবস্থান যেখানে ক্যামেরা অ্যাপ ফটো বা ভিডিও ফাইল সংরক্ষণ করে (
Uri
অবজেক্ট হিসেবে)।
-
যখন ক্যামেরা অ্যাপ সফলভাবে আপনার কার্যকলাপে ফোকাস ফেরত দেয়—অন্য কথায়, আপনার অ্যাপ onActivityResult()
কলব্যাক পায়—আপনি EXTRA_OUTPUT
মান দিয়ে নির্দিষ্ট করা URI-তে ফটো বা ভিডিও অ্যাক্সেস করতে পারবেন।
দ্রষ্টব্য: আপনি যখন একটি ফটো ক্যাপচার করতে ACTION_IMAGE_CAPTURE
ব্যবহার করেন, তখন ক্যামেরাটি "data"
নামে একটি অতিরিক্ত ক্ষেত্রে Bitmap
হিসাবে সংরক্ষিত ফলাফলের Intent
ছবির একটি ডাউনস্কেল করা অনুলিপি বা থাম্বনেইলও ফেরত দিতে পারে।
উদাহরণের উদ্দেশ্য:
কোটলিন
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. ... } }
জাভা
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 (API লেভেল 31) বা তার উপরে কাজ করার সময় এটি করতে, নিম্নলিখিত উদ্দেশ্য উদাহরণটি পড়ুন।
উদাহরণের উদ্দেশ্য:
কোটলিন
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. } }
জাভা
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
কীভাবে তৈরি করা যায় তা সহ একটি ফটো ক্যাপচার করতে এই উদ্দেশ্যটি কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও তথ্যের জন্য, ফটো তুলুন বা ভিডিও তুলুন পড়ুন।
উদাহরন ফিল্টার:
...> android:name="android.media.action.IMAGE_CAPTURE" /> android:name="android.intent.category.DEFAULT" />
এই অভিপ্রায়টি পরিচালনা করার সময়, ইনকামিং Intent
EXTRA_OUTPUT
অতিরিক্তের জন্য আপনার কার্যকলাপ পরীক্ষা করুন, তারপর সেই অতিরিক্ত দ্বারা নির্দিষ্ট স্থানে ক্যাপচার করা চিত্র বা ভিডিও সংরক্ষণ করুন এবং একটি Intent
সহ setResult()
কল করুন যাতে "data"
নামে একটি অতিরিক্ত একটি সংকুচিত থাম্বনেইল অন্তর্ভুক্ত থাকে।
স্থির চিত্র মোডে একটি ক্যামেরা অ্যাপ শুরু করুন
স্থির চিত্র মোডে একটি ক্যামেরা অ্যাপ খুলতে, INTENT_ACTION_STILL_IMAGE_CAMERA
অ্যাকশন ব্যবহার করুন।
- অ্যাকশন
-
INTENT_ACTION_STILL_IMAGE_CAMERA
- ডেটা ইউআরআই স্কিম
- কোনোটিই নয়
- MIME প্রকার
- কোনোটিই নয়
- অতিরিক্ত
- কোনোটিই নয়
উদাহরণের উদ্দেশ্য:
কোটলিন
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. } }
জাভা
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); } }
উদাহরন ফিল্টার:
...> android:name="android.media.action.STILL_IMAGE_CAMERA" /> android:name="android.intent.category.DEFAULT" />
ভিডিও মোডে একটি ক্যামেরা অ্যাপ শুরু করুন
ভিডিও মোডে একটি ক্যামেরা অ্যাপ খুলতে, INTENT_ACTION_VIDEO_CAMERA
অ্যাকশন ব্যবহার করুন।
- অ্যাকশন
-
INTENT_ACTION_VIDEO_CAMERA
- ডেটা ইউআরআই স্কিম
- কোনোটিই নয়
- MIME প্রকার
- কোনোটিই নয়
- অতিরিক্ত
- কোনোটিই নয়
উদাহরণের উদ্দেশ্য:
কোটলিন
fun capturePhoto() { val intent = Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA) if (intent.resolveActivity(packageManager) != null) { startActivityForResult(intent, REQUEST_IMAGE_CAPTURE) } }
জাভা
public void capturePhoto() { Intent intent = new Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA); if (intent.resolveActivity(getPackageManager()) != null) { startActivityForResult(intent, REQUEST_IMAGE_CAPTURE); } }
উদাহরন ফিল্টার:
...> android:name="android.media.action.VIDEO_CAMERA" /> android:name="android.intent.category.DEFAULT" />
পরিচিতি/মানুষ অ্যাপ
প্রতিটি ক্রিয়া সম্পাদন করার জন্য আপনার অ্যাপের ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করার জন্য আপনার প্রয়োজনীয় তথ্য সহ পরিচিতি পরিচালনা অ্যাপগুলির জন্য নিম্নলিখিতগুলি সাধারণ ক্রিয়াকলাপ রয়েছে৷
একটি পরিচিতি নির্বাচন করুন
ব্যবহারকারীকে একটি পরিচিতি নির্বাচন করতে এবং সমস্ত যোগাযোগের তথ্যে আপনার অ্যাপের অ্যাক্সেস প্রদান করতে, ACTION_PICK
অ্যাকশনটি ব্যবহার করুন এবং Contacts.CONTENT_TYPE
MIME প্রকারটি নির্দিষ্ট করুন৷CONTENT_TYPE৷
আপনার onActivityResult()
কলব্যাকে বিতরণ করা ফলাফলের Intent
content:
URI নির্বাচিত পরিচিতির দিকে নির্দেশ করে। প্রতিক্রিয়া আপনার অ্যাপটিকে পরিচিতি প্রদানকারী API ব্যবহার করে সেই পরিচিতিটি পড়ার জন্য অস্থায়ী অনুমতি দেয়, এমনকি যদি আপনার অ্যাপে READ_CONTACTS
অনুমতি অন্তর্ভুক্ত না থাকে।
টিপ: আপনার যদি যোগাযোগের তথ্যের শুধুমাত্র একটি নির্দিষ্ট অংশে অ্যাক্সেসের প্রয়োজন হয়, যেমন একটি ফোন নম্বর বা ইমেল ঠিকানা, তার পরিবর্তে কীভাবে নির্দিষ্ট যোগাযোগের ডেটা নির্বাচন করতে হয় সে সম্পর্কে পরবর্তী বিভাগটি দেখুন।
- অ্যাকশন
-
ACTION_PICK
- ডেটা ইউআরআই স্কিম
- কোনোটিই নয়
- MIME প্রকার
-
Contacts.CONTENT_TYPE
উদাহরণের উদ্দেশ্য:
কোটলিন
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. //... } }
জাভা
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. ... } }
যোগাযোগের ইউআরআই হয়ে গেলে কীভাবে যোগাযোগের বিশদ পুনরুদ্ধার করবেন সে সম্পর্কে তথ্যের জন্য, একটি পরিচিতির বিবরণ পুনরুদ্ধার করুন পড়ুন।
যখন আপনি এই অভিপ্রায়টি ব্যবহার করে যোগাযোগের URI পুনরুদ্ধার করেন, তখন আপনার সাধারণত সেই পরিচিতির জন্য প্রাথমিক বিশদ বিবরণ পড়ার জন্য READ_CONTACTS
অনুমতির প্রয়োজন হয় না, যেমন প্রদর্শনের নাম এবং পরিচিতিটি তারকাচিহ্নিত কিনা। যাইহোক, যদি আপনি একটি প্রদত্ত পরিচিতি সম্পর্কে আরও নির্দিষ্ট ডেটা পড়ার চেষ্টা করছেন—যেমন তাদের ফোন নম্বর বা ইমেল ঠিকানা—আপনার READ_CONTACTS
অনুমতি প্রয়োজন৷
নির্দিষ্ট যোগাযোগের ডেটা নির্বাচন করুন
ব্যবহারকারীকে একটি পরিচিতি থেকে তথ্যের একটি নির্দিষ্ট অংশ নির্বাচন করার জন্য, যেমন একটি ফোন নম্বর, ইমেল ঠিকানা, বা অন্যান্য ডেটা টাইপ, ACTION_PICK
অ্যাকশনটি ব্যবহার করুন এবং পরিচিতির ফোন নম্বর পেতে CommonDataKinds.Phone.CONTENT_TYPE
এর মতো নিম্নলিখিত সামগ্রীর একটিতে MIME প্রকারটি নির্দিষ্ট করুন৷
দ্রষ্টব্য: অনেক ক্ষেত্রে, একটি নির্দিষ্ট পরিচিতি সম্পর্কে নির্দিষ্ট তথ্য দেখতে আপনার অ্যাপের READ_CONTACTS
অনুমতি থাকা প্রয়োজন।
আপনি যদি একটি পরিচিতি থেকে শুধুমাত্র এক ধরনের ডেটা পুনরুদ্ধার করতে চান, তাহলে ContactsContract.CommonDataKinds
ক্লাস থেকে CONTENT_TYPE
সহ এই কৌশলটি Contacts.CONTENT_TYPE
ব্যবহার করার চেয়ে বেশি কার্যকরী, যেমনটি পূর্ববর্তী বিভাগে দেখানো হয়েছে৷ ফলাফল আপনাকে পরিচিতি প্রদানকারীর কাছে আরও জটিল অনুসন্ধানের প্রয়োজন ছাড়াই পছন্দসই ডেটাতে সরাসরি অ্যাক্সেস প্রদান করে।
আপনার onActivityResult()
কলব্যাকে বিতরিত ফলাফলের Intent
content:
URI নির্বাচিত যোগাযোগের ডেটা নির্দেশ করে। প্রতিক্রিয়া আপনার অ্যাপটিকে সেই যোগাযোগের ডেটা পড়ার জন্য অস্থায়ী অনুমতি দেয় এমনকি যদি আপনার অ্যাপে READ_CONTACTS
অনুমতি অন্তর্ভুক্ত না থাকে।
- অ্যাকশন
-
ACTION_PICK
- ডেটা ইউআরআই স্কিম
- কোনোটিই নয়
- MIME প্রকার
-
CommonDataKinds.Phone.CONTENT_TYPE
- একটি ফোন নম্বর সহ পরিচিতি থেকে চয়ন করুন।
-
CommonDataKinds.Email.CONTENT_TYPE
- একটি ইমেল ঠিকানা সহ পরিচিতি থেকে চয়ন করুন.
-
CommonDataKinds.StructuredPostal.CONTENT_TYPE
- একটি ডাক ঠিকানা সহ পরিচিতি থেকে চয়ন করুন.
অথবা
ContactsContract
অধীনে অন্যান্য অনেকCONTENT_TYPE
মানগুলির মধ্যে একটি।-
উদাহরণের উদ্দেশ্য:
কোটলিন
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= 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. ... } } } }
জাভা
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:
উদ্দেশ্য ডেটা হিসাবে URI৷
প্রাথমিকভাবে পরিচিতির URI পুনরুদ্ধার করার দুটি প্রাথমিক উপায় রয়েছে:
- পূর্ববর্তী বিভাগে দেখানো
ACTION_PICK
ক্রিয়া দ্বারা ফিরে আসা পরিচিতি URI ব্যবহার করুন৷ এই পদ্ধতির কোনো অ্যাপ অনুমতির প্রয়োজন নেই। - পরিচিতিগুলির একটি তালিকা পুনরুদ্ধার করুন-এ বর্ণিত সমস্ত পরিচিতির তালিকা সরাসরি অ্যাক্সেস করুন। এই পদ্ধতির জন্য
READ_CONTACTS
অনুমতি প্রয়োজন৷
- অ্যাকশন
-
ACTION_VIEW
- ডেটা ইউআরআই স্কিম
-
content:
- MIME প্রকার
- কোনোটিই নয়। যোগাযোগের URI থেকে টাইপ অনুমান করা হয়েছে।
উদাহরণের উদ্দেশ্য:
কোটলিন
fun viewContact(contactUri: Uri) { val intent = Intent(Intent.ACTION_VIEW, contactUri) if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
জাভা
public void viewContact(Uri contactUri) { Intent intent = new Intent(Intent.ACTION_VIEW, contactUri); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
একটি বিদ্যমান পরিচিতি সম্পাদনা করুন
একটি পরিচিত পরিচিতি সম্পাদনা করতে, ACTION_EDIT
ক্রিয়াটি ব্যবহার করুন, একটি content:
উদ্দেশ্য ডেটা হিসাবে URI, এবং ContactsContract.Intents.Insert
এ ধ্রুবক দ্বারা নির্দিষ্ট করা অতিরিক্তগুলিতে পরিচিত যেকোন যোগাযোগের তথ্য অন্তর্ভুক্ত করুন।
প্রাথমিকভাবে যোগাযোগের URI পুনরুদ্ধার করার দুটি প্রাথমিক উপায় রয়েছে:
- পূর্ববর্তী বিভাগে দেখানো
ACTION_PICK
ক্রিয়া দ্বারা ফিরে আসা পরিচিতি URI ব্যবহার করুন৷ এই পদ্ধতির কোনো অ্যাপ অনুমতির প্রয়োজন নেই। - পরিচিতিগুলির একটি তালিকা পুনরুদ্ধার করুন-এ বর্ণিত সমস্ত পরিচিতির তালিকা সরাসরি অ্যাক্সেস করুন। এই পদ্ধতির জন্য
READ_CONTACTS
অনুমতি প্রয়োজন৷
- অ্যাকশন
-
ACTION_EDIT
- ডেটা ইউআরআই স্কিম
-
content:
- MIME প্রকার
- যোগাযোগের URI থেকে টাইপ অনুমান করা হয়েছে।
- অতিরিক্ত
-
ContactsContract.Intents.Insert
এ সংজ্ঞায়িত এক বা একাধিক অতিরিক্ত যাতে আপনি যোগাযোগের বিবরণের ক্ষেত্রগুলি পূরণ করতে পারেন৷
উদাহরণের উদ্দেশ্য:
কোটলিন
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) } }
জাভা
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
অ্যাকশনটি ব্যবহার করুন, MIME প্রকার হিসাবে Contacts.CONTENT_TYPE
নির্দিষ্ট করুন এবং ContactsContract.Intents.Insert
এ ধ্রুবক দ্বারা নির্দিষ্ট করা অতিরিক্তগুলিতে পরিচিত কোনো পরিচিতি তথ্য অন্তর্ভুক্ত করুন।
- অ্যাকশন
-
ACTION_INSERT
- ডেটা ইউআরআই স্কিম
- কোনোটিই নয়
- MIME প্রকার
-
Contacts.CONTENT_TYPE
- অতিরিক্ত
-
ContactsContract.Intents.Insert
এ সংজ্ঞায়িত এক বা একাধিক অতিরিক্ত।
উদাহরণের উদ্দেশ্য:
কোটলিন
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) } }
জাভা
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
অ্যাকশন ব্যবহার করলে, এটি পরিবর্তে একাধিকUri
অবজেক্ট ধারণকারী একটিArrayList
।
-
উদাহরণের উদ্দেশ্য:
কোটলিন
fun composeEmail(addresses: Array, 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) } }
জাভা
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:"
ডেটা স্কিম অন্তর্ভুক্ত করুন:
কোটলিন
fun composeEmail(addresses: Array, 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) } }
জাভা
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); } }
উদাহরন ফিল্টার:
...> android:name="android.intent.action.SEND" /> android:type="*/*" /> android:name="android.intent.category.DEFAULT" /> android:name="android.intent.action.SENDTO" /> android:scheme="mailto" /> android:name="android.intent.category.DEFAULT" />
ফাইল স্টোরেজ
ফাইল স্টোরেজ অ্যাপ্লিকেশানগুলির জন্য নিম্নলিখিতগুলি সাধারণ অ্যাকশনগুলি রয়েছে, যার মধ্যে প্রতিটি ক্রিয়া সম্পাদন করার জন্য আপনার অ্যাপের ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করার জন্য প্রয়োজনীয় তথ্য সহ।
একটি নির্দিষ্ট ধরনের ফাইল পুনরুদ্ধার করুন
অনুরোধ করতে যে ব্যবহারকারী একটি নথি বা ফটোর মতো একটি ফাইল নির্বাচন করুন এবং আপনার অ্যাপে একটি রেফারেন্স ফেরত দিন, ACTION_GET_CONTENT
অ্যাকশনটি ব্যবহার করুন এবং আপনার পছন্দসই MIME প্রকারটি নির্দিষ্ট করুন৷ আপনার অ্যাপে ফিরে আসা ফাইলের রেফারেন্সটি আপনার কার্যকলাপের বর্তমান জীবনচক্রে ক্ষণস্থায়ী, তাই আপনি যদি পরে এটি অ্যাক্সেস করতে চান তবে আপনাকে অবশ্যই একটি অনুলিপি আমদানি করতে হবে যা আপনি পরে পড়তে পারবেন।
এই অভিপ্রায় ব্যবহারকারীকে প্রক্রিয়ায় একটি নতুন ফাইল তৈরি করতে দেয়। উদাহরণস্বরূপ, একটি বিদ্যমান ফটো নির্বাচন করার পরিবর্তে, ব্যবহারকারী ক্যামেরা দিয়ে একটি নতুন ছবি ক্যাপচার করতে পারেন।
আপনার onActivityResult()
পদ্ধতিতে বিতরণ করা ফলাফলের উদ্দেশ্য ফাইলের দিকে নির্দেশ করে একটি URI সহ ডেটা অন্তর্ভুক্ত করে। URI যেকোনো কিছু হতে পারে, যেমন একটি http:
URI, file:
URI, বা content:
URI। যাইহোক, আপনি যদি শুধুমাত্র একটি বিষয়বস্তু প্রদানকারীর (একটি content:
URI) থেকে অ্যাক্সেসযোগ্য এবং openFileDescriptor()
এর সাথে ফাইল স্ট্রীম হিসাবে উপলব্ধ শুধুমাত্র সেগুলির মধ্যে নির্বাচনযোগ্য ফাইলগুলিকে সীমাবদ্ধ করতে চান, তাহলে আপনার অভিপ্রায়ে CATEGORY_OPENABLE
বিভাগ যোগ করুন৷
অ্যান্ড্রয়েড 4.3 (API লেভেল 18) এবং উচ্চতর তে, আপনি ইন্টেন্টে EXTRA_ALLOW_MULTIPLE
যোগ করে ব্যবহারকারীকে একাধিক ফাইল নির্বাচন করতে দিতে পারেন, true
সেট করা। তারপর আপনি getClipData()
দ্বারা ফিরে আসা একটি ClipData
অবজেক্টে নির্বাচিত প্রতিটি ফাইল অ্যাক্সেস করতে পারবেন।
- অ্যাকশন
-
ACTION_GET_CONTENT
- ডেটা ইউআরআই স্কিম
- কোনোটিই নয়
- MIME প্রকার
- ব্যবহারকারীকে যে ফাইলটি নির্বাচন করতে হবে তার সাথে সঙ্গতিপূর্ণ MIME প্রকার৷
- অতিরিক্ত
-
EXTRA_ALLOW_MULTIPLE
- একটি বুলিয়ান যা ঘোষণা করে যে ব্যবহারকারী একবারে একাধিক ফাইল নির্বাচন করতে পারে কিনা।
-
EXTRA_LOCAL_ONLY
- একটি বুলিয়ান যা ঘোষণা করে যে প্রত্যাবর্তিত ফাইলটি দূরবর্তী পরিষেবা থেকে ডাউনলোডের প্রয়োজন না করে সরাসরি ডিভাইস থেকে উপলব্ধ হবে কিনা।
-
- বিভাগ (ঐচ্ছিক)
-
CATEGORY_OPENABLE
-
openFileDescriptor()
এর সাথে ফাইল স্ট্রীম হিসাবে উপস্থাপন করা যেতে পারে এমন শুধুমাত্র "খোলা" ফাইলগুলি ফেরত দিতে।
-
একটি ফটো পেতে উদাহরন উদাহরণ:
কোটলিন
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. ... } }
জাভা
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. ... } }
একটি ফটো ফেরত দেওয়ার জন্য উদ্দেশ্য ফিল্টারের উদাহরণ:
...> android:name="android.intent.action.GET_CONTENT" /> android:type="image/*" /> android:name="android.intent.category.DEFAULT" /> android:name="android.intent.category.OPENABLE" />
একটি নির্দিষ্ট ধরনের ফাইল খুলুন
ACTION_GET_CONTENT
অ্যাকশন ব্যবহার করে আপনার অ্যাপে আমদানি করতে হবে এমন একটি ফাইলের কপি পুনরুদ্ধার করার পরিবর্তে, Android 4.4 বা উচ্চতর সংস্করণে চলাকালীন আপনি ACTION_OPEN_DOCUMENT
অ্যাকশন ব্যবহার করে এবং একটি MIME প্রকার নির্দিষ্ট করে অন্য অ্যাপ দ্বারা পরিচালিত একটি ফাইল খোলার অনুরোধ করতে পারেন। ব্যবহারকারীকে একটি নতুন দস্তাবেজ তৈরি করতে দিতে যা আপনার অ্যাপ লিখতে পারে, পরিবর্তে ACTION_CREATE_DOCUMENT
অ্যাকশনটি ব্যবহার করুন৷
উদাহরণস্বরূপ, বিদ্যমান PDF নথিগুলি থেকে নির্বাচন করার পরিবর্তে, ACTION_CREATE_DOCUMENT
উদ্দেশ্য ব্যবহারকারীদের নির্বাচন করতে দেয় যেখানে তারা একটি নতুন নথি তৈরি করতে চান, যেমন অন্য একটি অ্যাপের মধ্যে যা নথির সঞ্চয়স্থান পরিচালনা করে৷ আপনার অ্যাপটি তখন URI অবস্থান পায় যেখানে এটি নতুন নথি লিখতে পারে।
যেখানে ACTION_GET_CONTENT
অ্যাকশন থেকে আপনার onActivityResult()
পদ্ধতিতে বিতরিত অভিপ্রায় যে কোনো ধরনের URI ফেরত দিতে পারে, ACTION_OPEN_DOCUMENT
এবং ACTION_CREATE_DOCUMENT
থেকে ফলাফলের অভিপ্রায় সর্বদা একটি content:
URI যা একটি DocumentsProvider
দ্বারা সমর্থিত৷ আপনি openFileDescriptor()
দিয়ে ফাইলটি খুলতে পারেন এবং DocumentsContract.Document
থেকে কলাম ব্যবহার করে এর বিশদ বিবরণ জিজ্ঞাসা করতে পারেন।
প্রত্যাবর্তিত ইউআরআই আপনার অ্যাপটিকে ফাইলে দীর্ঘমেয়াদী পড়ার অ্যাক্সেস দেয়, সম্ভবত লেখার অ্যাক্সেস সহ। ACTION_OPEN_DOCUMENT
অ্যাকশনটি বিশেষভাবে উপযোগী হয় যখন আপনি আপনার অ্যাপে একটি অনুলিপি না করে একটি বিদ্যমান ফাইল পড়তে চান বা যখন আপনি একটি ফাইল খুলতে এবং সম্পাদনা করতে চান৷
আপনি উদ্দেশ্যটিতে EXTRA_ALLOW_MULTIPLE
যোগ করে ব্যবহারকারীকে একাধিক ফাইল নির্বাচন করতে দিতে পারেন, true
সেট করা হয়েছে৷ যদি ব্যবহারকারী শুধুমাত্র একটি আইটেম নির্বাচন করে, তাহলে আপনি getData()
থেকে আইটেমটি পুনরুদ্ধার করতে পারেন। ব্যবহারকারী যদি একাধিক আইটেম নির্বাচন করে, তাহলে getData()
নাল ফেরত দেয় এবং আপনাকে অবশ্যই একটি ClipData
অবজেক্ট থেকে প্রতিটি আইটেম পুনরুদ্ধার করতে হবে যা getClipData()
দ্বারা ফেরত দেওয়া হয়।
দ্রষ্টব্য: আপনার উদ্দেশ্য অবশ্যই একটি MIME প্রকার নির্দিষ্ট করতে হবে এবং CATEGORY_OPENABLE
বিভাগ ঘোষণা করতে হবে ৷ উপযুক্ত হলে, আপনি EXTRA_MIME_TYPES
অতিরিক্তের সাথে MIME প্রকারের একটি অ্যারে যোগ করে একাধিক 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()
এর সাথে ফাইল স্ট্রীম হিসাবে উপস্থাপন করা যেতে পারে এমন শুধুমাত্র "খোলা" ফাইলগুলি ফেরত দিতে।
-
একটি ফটো পেতে উদাহরন উদাহরণ:
কোটলিন
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. ... } }
জাভা
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
অ্যাকশনের মাধ্যমে একটি অভিপ্রায়ে সাড়া দিতে পারে না৷ পরিবর্তে, সিস্টেমটি এই অভিপ্রায়টি গ্রহণ করে এবং একটি ইউনিফাইড ইউজার ইন্টারফেসে বিভিন্ন অ্যাপ থেকে উপলব্ধ সমস্ত ফাইল প্রদর্শন করে।
এই UI-তে আপনার অ্যাপের ফাইলগুলি প্রদান করতে এবং অন্যান্য অ্যাপগুলিকে সেগুলি খুলতে দিতে, আপনাকে অবশ্যই একটি DocumentsProvider
প্রয়োগ করতে হবে এবং PROVIDER_INTERFACE
( "android.content.action.DOCUMENTS_PROVIDER"
) এর জন্য একটি অভিপ্রায় ফিল্টার অন্তর্ভুক্ত করতে হবে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
... android:grantUriPermissions="true" android:exported="true" android:permission="android.permission.MANAGE_DOCUMENTS"> android:name="android.content.action.DOCUMENTS_PROVIDER" />
আপনার অ্যাপ দ্বারা পরিচালিত ফাইলগুলিকে অন্যান্য অ্যাপ থেকে কীভাবে খোলা যায় সে সম্পর্কে আরও তথ্যের জন্য, স্টোরেজ অ্যাক্সেস ফ্রেমওয়ার্ক ব্যবহার করে ফাইল খুলুন পড়ুন।
স্থানীয় কর্ম
একটি গাড়ী কল একটি সাধারণ স্থানীয় কর্ম. নিম্নলিখিত বিভাগে তথ্য ব্যবহার করে এই ক্রিয়া সম্পাদন করার জন্য আপনার অ্যাপের ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করুন৷
একটি গাড়ী কল
একটি ট্যাক্সি কল করতে, ACTION_RESERVE_TAXI_RESERVATION
অ্যাকশন ব্যবহার করুন৷
দ্রষ্টব্য: এই ক্রিয়াটি সম্পূর্ণ করার আগে অ্যাপগুলি অবশ্যই ব্যবহারকারীর কাছ থেকে নিশ্চিতকরণের জন্য জিজ্ঞাসা করবে৷
- অ্যাকশন
-
ACTION_RESERVE_TAXI_RESERVATION
- ডেটা URI
- কোনোটিই নয়
- MIME প্রকার
- কোনোটিই নয়
- অতিরিক্ত
- কোনোটিই নয়
উদাহরণের উদ্দেশ্য:
কোটলিন
fun callCar() { val intent = Intent(ReserveIntents.ACTION_RESERVE_TAXI_RESERVATION) if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
জাভা
public void callCar() { Intent intent = new Intent(ReserveIntents.ACTION_RESERVE_TAXI_RESERVATION); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
উদাহরন ফিল্টার:
...> android:name="com.google.android.gms.actions.RESERVE_TAXI_RESERVATION" /> android:name="android.intent.category.DEFAULT" />
মানচিত্র
একটি মানচিত্রে একটি অবস্থান দেখানো মানচিত্র অ্যাপ্লিকেশনগুলির জন্য একটি সাধারণ কাজ৷ নিম্নলিখিত বিভাগে তথ্য ব্যবহার করে এই ক্রিয়া সম্পাদন করার জন্য আপনার অ্যাপের ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করুন৷
একটি মানচিত্রে একটি অবস্থান দেখান
একটি মানচিত্র খুলতে, ACTION_VIEW
ক্রিয়াটি ব্যবহার করুন এবং নিম্নলিখিত স্কিমগুলির মধ্যে একটির সাথে উদ্দেশ্য ডেটাতে অবস্থানের তথ্য নির্দিষ্ট করুন৷
- অ্যাকশন
-
ACTION_VIEW
- ডেটা ইউআরআই স্কিম
-
geo: latitude , longitude
- প্রদত্ত দ্রাঘিমাংশ এবং অক্ষাংশে মানচিত্র দেখান।
উদাহরণ:
"geo:47.6,-122.3"
-
geo: latitude , longitude ?z= zoom
- একটি নির্দিষ্ট জুম স্তরে প্রদত্ত দ্রাঘিমাংশ এবং অক্ষাংশে মানচিত্রটি দেখান। 1 এর একটি জুম স্তর প্রদত্ত ল্যাট , 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 প্রকার
- কোনোটিই নয়
উদাহরণের উদ্দেশ্য:
কোটলিন
fun showMap(geoLocation: Uri) { val intent = Intent(Intent.ACTION_VIEW).apply { data = geoLocation } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
জাভা
public void showMap(Uri geoLocation) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(geoLocation); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
উদাহরন ফিল্টার:
...> android:name="android.intent.action.VIEW" /> android:scheme="geo" /> android:name="android.intent.category.DEFAULT" />
মিউজিক বা ভিডিও
নিম্নলিখিতগুলি সঙ্গীত এবং ভিডিও অ্যাপ্লিকেশানগুলির জন্য সাধারণ ক্রিয়াকলাপগুলি সহ, প্রতিটি ক্রিয়া সম্পাদন করার জন্য আপনার অ্যাপের ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করার জন্য প্রয়োজনীয় তথ্য সহ৷
একটি মিডিয়া ফাইল চালান
একটি মিউজিক ফাইল চালাতে, ACTION_VIEW
অ্যাকশন ব্যবহার করুন এবং উদ্দেশ্য ডেটাতে ফাইলটির URI অবস্থান উল্লেখ করুন।
- অ্যাকশন
-
ACTION_VIEW
- ডেটা ইউআরআই স্কিম
-
file:
content:
http:
-
- MIME প্রকার
-
"audio/*"
"application/ogg"
"application/x-ogg"
"application/itunes"
- অথবা আপনার অ্যাপের প্রয়োজন অন্য কোনো।
-
উদাহরণের উদ্দেশ্য:
কোটলিন
fun playMedia(file: Uri) { val intent = Intent(Intent.ACTION_VIEW).apply { data = file } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
জাভা
public void playMedia(Uri file) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(file); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
উদাহরন ফিল্টার:
...> android:name="android.intent.action.VIEW" /> android:type="audio/*" /> android:type="application/ogg" /> android:name="android.intent.category.DEFAULT" />
একটি অনুসন্ধান ক্যোয়ারী উপর ভিত্তি করে সঙ্গীত বাজান
একটি অনুসন্ধান প্রশ্নের উপর ভিত্তি করে সঙ্গীত বাজাতে, 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
(প্রয়োজনীয়): একটি স্ট্রিং যাতে অ্যালবাম, শিল্পী, জেনার, প্লেলিস্ট, বা শিরোনামের যেকোনো সমন্বয় থাকে। এই অতিরিক্ত সবসময় পশ্চাদপদ সামঞ্জস্য জন্য প্রদান করা হয়. বিদ্যমান অ্যাপ্লিকেশানগুলি যেগুলি অনুসন্ধান মোডগুলি সম্পর্কে জানে না তারা এই অভিপ্রায়টিকে একটি অসংগঠিত অনুসন্ধান হিসাবে প্রক্রিয়া করতে পারে৷
-
-
উদাহরণের উদ্দেশ্য:
ব্যবহারকারী যদি একটি নির্দিষ্ট শিল্পীর কাছ থেকে সঙ্গীত শুনতে চান, একটি অনুসন্ধান অ্যাপ্লিকেশন নিম্নলিখিত অভিপ্রায় তৈরি করতে পারে:
কোটলিন
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) } }
জাভা
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); } }
উদাহরন ফিল্টার:
...> android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH" /> android:name="android.intent.category.DEFAULT" />
আপনার কার্যকলাপে এই অভিপ্রায় পরিচালনা করার সময়, অনুসন্ধান মোড নির্ধারণ করতে ইনকামিং Intent
অতিরিক্ত EXTRA_MEDIA_FOCUS
এর মান পরীক্ষা করুন৷ একবার আপনার কার্যকলাপ অনুসন্ধান মোড সনাক্ত করা হলে, সেই নির্দিষ্ট অনুসন্ধান মোডের জন্য অতিরিক্ত অতিরিক্ত মানগুলি পড়ুন। এই তথ্যের সাহায্যে, আপনার অ্যাপটি সার্চ কোয়েরির সাথে মেলে এমন কন্টেন্ট প্লে করতে তার ইনভেন্টরির মধ্যে সার্চ করতে পারে। এটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে।
কোটলিন
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) } } } }
জাভা
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:
-
voicemail:
-
- MIME প্রকার
- কোনোটিই নয়
-
tel:2125551212
-
tel:(212) 555 1212
- অ্যাকশন
-
"com.google.android.gms.actions.SEARCH_ACTION"
- Google ভয়েস অ্যাকশন থেকে সার্চ কোয়েরি সমর্থন করুন।
-
- অতিরিক্ত
-
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:
smsto:
mms:
mmsto:
এই স্কিম সব একই ভাবে পরিচালনা করা হয়.
-
- MIME প্রকার
-
"text/plain"
"image/*"
"video/*"
-
- অতিরিক্ত
-
"subject"
- বার্তা বিষয়ের জন্য একটি স্ট্রিং (সাধারণত শুধুমাত্র MMS এর জন্য)।
-
"sms_body"
- পাঠ্য বার্তার জন্য একটি স্ট্রিং।
-
EXTRA_STREAM
- সংযুক্ত করার জন্য ছবি বা ভিডিওর দিকে নির্দেশ করে একটি
Uri
।ACTION_SEND_MULTIPLE
অ্যাকশন ব্যবহার করলে, এই অতিরিক্ত হলUri
অবজেক্টের একটিArrayList
যা সংযুক্ত করার জন্য ছবি বা ভিডিওর দিকে নির্দেশ করে।
-
- অ্যাকশন
-
ACTION_VIEW
- ডেটা ইউআরআই স্কিম
-
http:
https:
- MIME প্রকার
-
"text/plain"
"text/html"
"application/xhtml+xml"
"application/vnd.wap.xhtml+xml"
-
- বিকাশের জন্য একটি Android ডিভাইস সেট আপ করুন বা একটি ভার্চুয়াল ডিভাইস ব্যবহার করুন৷
- আপনার অ্যাপের একটি সংস্করণ ইনস্টল করুন যা আপনি সমর্থন করতে চান এমন উদ্দেশ্যগুলি পরিচালনা করে।
-
adb
ব্যবহার করে একটি উদ্দেশ্য ফায়ার করুন:adb shell am start -a
-t -d \ -e -n যেমন:
adb shell am start -a android.intent.action.DIAL \ -d tel:555-5555 -n org.example.MyApp/.MyActivity
- আপনি যদি প্রয়োজনীয় অভিপ্রায় ফিল্টারগুলি সংজ্ঞায়িত করেন তবে অভিপ্রায়টি পরিচালনা করুন৷
- অ্যাকশন
-
ACTION_SET_ALARM
- ডেটা URI
- কোনোটিই নয়
- MIME প্রকার
- কোনোটিই নয়
- অতিরিক্ত
-
EXTRA_HOUR
- অ্যালার্মের জন্য ঘন্টা।
-
EXTRA_MINUTES
- অ্যালার্মের জন্য মিনিট।
-
EXTRA_MESSAGE
- অ্যালার্ম সনাক্ত করার জন্য একটি কাস্টম বার্তা।
-
EXTRA_DAYS
- প্রতি সপ্তাহের দিন সহ একটি
ArrayList
যেখানে এই অ্যালার্ম পুনরাবৃত্তি করে। প্রতিটি দিন অবশ্যইMONDAY
মতোCalendar
ক্লাস থেকে পূর্ণসংখ্যার সাথে ঘোষণা করতে হবে।এককালীন অ্যালার্মের জন্য, এটি অতিরিক্ত নির্দিষ্ট করবেন না।
-
EXTRA_RINGTONE
- একটি
content:
ইউআরআই অ্যালার্মের সাথে ব্যবহার করার জন্য একটি রিংটোন নির্দিষ্ট করে, বা কোনও রিংটোনটির জন্যVALUE_RINGTONE_SILENT
।ডিফল্ট রিংটোন ব্যবহার করতে, এই অতিরিক্ত নির্দিষ্ট করবেন না।
-
EXTRA_VIBRATE
- একটি বুলিয়ান এই অ্যালার্মের জন্য কম্পন করবেন কিনা তা নির্দিষ্ট করে।
-
EXTRA_SKIP_UI
- একটি বুলিয়ান উল্লেখ করে যে অ্যালার্ম সেট করার সময় প্রতিক্রিয়াশীল অ্যাপটি অবশ্যই তার ইউআই এড়িয়ে যেতে হবে কিনা। যদি সত্য হয় তবে অ্যাপ্লিকেশনটিকে অবশ্যই কোনও নিশ্চিতকরণ ইউআই বাইপাস করতে হবে এবং নির্দিষ্ট অ্যালার্ম সেট করতে হবে।
-
- অ্যাকশন
-
ACTION_SET_TIMER
- ডেটা URI
- কোনোটিই নয়
- MIME প্রকার
- কোনোটিই নয়
- অতিরিক্ত
-
EXTRA_LENGTH
- সেকেন্ডে টাইমার দৈর্ঘ্য।
-
EXTRA_MESSAGE
- টাইমার সনাক্ত করার জন্য একটি কাস্টম বার্তা।
-
EXTRA_SKIP_UI
- একটি বুলিয়ান নির্দিষ্ট করে যে টাইমার সেট করার সময় প্রতিক্রিয়াশীল অ্যাপটি অবশ্যই তার ইউআই এড়িয়ে যেতে হবে কিনা। যদি সত্য হয় তবে অ্যাপ্লিকেশনটিকে অবশ্যই কোনও নিশ্চিতকরণ ইউআই বাইপাস করতে হবে এবং নির্দিষ্ট টাইমারটি শুরু করতে হবে।
-
- অ্যাকশন
-
ACTION_SHOW_ALARMS
- ডেটা URI
- কোনোটিই নয়
- MIME প্রকার
- কোনোটিই নয়
- অ্যাকশন
-
ACTION_INSERT
- ডেটা URI
-
Events.CONTENT_URI
- MIME প্রকার
-
"vnd.android.cursor.dir/event"
- অতিরিক্ত
-
EXTRA_EVENT_ALL_DAY
- এটি একটি সারাদিনের ইভেন্ট কিনা তা নির্দিষ্ট করে একটি বুলিয়ান।
-
EXTRA_EVENT_BEGIN_TIME
- ইভেন্টের শুরুর সময় (যুগের পর থেকে মিলিসেকেন্ডস)।
-
EXTRA_EVENT_END_TIME
- ইভেন্টের শেষ সময় (যুগের পর থেকে মিলিসেকেন্ড)।
-
TITLE
- ইভেন্টের শিরোনাম।
-
DESCRIPTION
- ঘটনার বিবরণ।
-
EVENT_LOCATION
- অনুষ্ঠানের অবস্থান।
-
EXTRA_EMAIL
- ইমেল ঠিকানাগুলির একটি কমা-বিচ্ছিন্ন তালিকা যা আমন্ত্রিতদের নির্দিষ্ট করে।
CalendarContract.EventsColumns
ক্লাসে সংজ্ঞায়িত ধ্রুবকগুলি ব্যবহার করে আরও অনেক ইভেন্টের বিশদ নির্দিষ্ট করা যেতে পারে।-
- অ্যাকশন
-
ACTION_IMAGE_CAPTURE
বা
ACTION_VIDEO_CAPTURE
- ডেটা ইউআরআই স্কিম
- কোনোটিই নয়
- MIME প্রকার
- কোনোটিই নয়
- অতিরিক্ত
-
EXTRA_OUTPUT
- ইউআরআই অবস্থান যেখানে ক্যামেরা অ্যাপ্লিকেশন ফটো বা ভিডিও ফাইল সংরক্ষণ করে (
Uri
অবজেক্ট হিসাবে)।
-
- অ্যাকশন
-
INTENT_ACTION_STILL_IMAGE_CAMERA
- ডেটা ইউআরআই স্কিম
- কোনোটিই নয়
- MIME প্রকার
- কোনোটিই নয়
- অতিরিক্ত
- কোনোটিই নয়
- অ্যাকশন
-
INTENT_ACTION_VIDEO_CAMERA
- ডেটা ইউআরআই স্কিম
- কোনোটিই নয়
- MIME প্রকার
- কোনোটিই নয়
- অতিরিক্ত
- কোনোটিই নয়
- অ্যাকশন
-
ACTION_PICK
- ডেটা ইউআরআই স্কিম
- কোনোটিই নয়
- MIME প্রকার
-
Contacts.CONTENT_TYPE
- অ্যাকশন
-
ACTION_PICK
- ডেটা ইউআরআই স্কিম
- কোনোটিই নয়
- MIME প্রকার
-
CommonDataKinds.Phone.CONTENT_TYPE
- একটি ফোন নম্বর সহ পরিচিতিগুলি থেকে চয়ন করুন।
-
CommonDataKinds.Email.CONTENT_TYPE
- একটি ইমেল ঠিকানা সহ পরিচিতিগুলি থেকে চয়ন করুন।
-
CommonDataKinds.StructuredPostal.CONTENT_TYPE
- একটি ডাক ঠিকানা সহ যোগাযোগ থেকে বাছাই করুন।
বা
ContactsContract
অধীনে অন্যান্য অনেকCONTENT_TYPE
মানগুলির মধ্যে একটি।-
- পূর্ববর্তী বিভাগে প্রদর্শিত
ACTION_PICK
অ্যাকশন দ্বারা ফিরে আসা যোগাযোগটি ইউআরআই ব্যবহার করুন। এই পদ্ধতির কোনও অ্যাপ্লিকেশন অনুমতি প্রয়োজন হয় না। - পরিচিতিগুলির তালিকা পুনরুদ্ধার করতে বর্ণিত হিসাবে সমস্ত পরিচিতির তালিকা সরাসরি অ্যাক্সেস করুন। এই পদ্ধতির জন্য
READ_CONTACTS
অনুমতি প্রয়োজন। - অ্যাকশন
-
ACTION_VIEW
- ডেটা ইউআরআই স্কিম
-
content:
- MIME প্রকার
- কোনোটিই নয়। প্রকারটি যোগাযোগের ইউআরআই থেকে অনুমান করা হয়।
- পূর্ববর্তী বিভাগে প্রদর্শিত
ACTION_PICK
অ্যাকশন দ্বারা ফিরে আসা যোগাযোগটি ইউআরআই ব্যবহার করুন। এই পদ্ধতির কোনও অ্যাপ্লিকেশন অনুমতি প্রয়োজন হয় না। - পরিচিতিগুলির তালিকা পুনরুদ্ধার করতে বর্ণিত হিসাবে সমস্ত পরিচিতির তালিকা সরাসরি অ্যাক্সেস করুন। এই পদ্ধতির জন্য
READ_CONTACTS
অনুমতি প্রয়োজন। - অ্যাকশন
-
ACTION_EDIT
- ডেটা ইউআরআই স্কিম
-
content:
- MIME প্রকার
- প্রকারটি যোগাযোগের ইউআরআই থেকে অনুমান করা হয়।
- অতিরিক্ত
-
ContactsContract.Intents.Insert
সংজ্ঞায়িত এক বা একাধিক অতিরিক্তগুলি যাতে আপনি যোগাযোগের বিশদগুলির ক্ষেত্রগুলি জনপ্রিয় করতে পারেন। - অ্যাকশন
-
ACTION_INSERT
- ডেটা ইউআরআই স্কিম
- কোনোটিই নয়
- MIME প্রকার
-
Contacts.CONTENT_TYPE
- অতিরিক্ত
-
ContactsContract.Intents.Insert
সংজ্ঞায়িত এক বা একাধিক অতিরিক্ত। - অ্যাকশন
-
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
অ্যাকশন ব্যবহার করে তবে এটি পরিবর্তে একাধিকUri
অবজেক্টযুক্ত একটিArrayList
।
-
- অ্যাকশন
-
ACTION_GET_CONTENT
- ডেটা ইউআরআই স্কিম
- কোনোটিই নয়
- MIME প্রকার
- ব্যবহারকারীকে নির্বাচন করতে হবে এমন ফাইলের সাথে সম্পর্কিত মাইম টাইপ।
- অতিরিক্ত
-
EXTRA_ALLOW_MULTIPLE
- একটি বুলিয়ান যা ব্যবহারকারী একবারে একাধিক ফাইল নির্বাচন করতে পারে কিনা তা ঘোষণা করে।
-
EXTRA_LOCAL_ONLY
- একটি বুলিয়ান যা ঘোষণা করে যে প্রত্যাবর্তিত ফাইলটি কোনও দূরবর্তী পরিষেবা থেকে ডাউনলোডের প্রয়োজনের চেয়ে সরাসরি ডিভাইস থেকে সরাসরি উপলব্ধ থাকতে হবে কিনা তা ঘোষণা করে।
-
- বিভাগ (al চ্ছিক)
-
CATEGORY_OPENABLE
- কেবলমাত্র "ওপেনেবল" ফাইলগুলি ফিরিয়ে দিতে যা
openFileDescriptor()
সহ ফাইল স্ট্রিম হিসাবে প্রতিনিধিত্ব করা যেতে পারে।
-
- অ্যাকশন
-
ACTION_OPEN_DOCUMENT
বা
ACTION_CREATE_DOCUMENT
- ডেটা ইউআরআই স্কিম
- কোনোটিই নয়
- MIME প্রকার
- ব্যবহারকারীকে নির্বাচন করতে হবে এমন ফাইলের সাথে সম্পর্কিত মাইম টাইপ।
- অতিরিক্ত
-
EXTRA_MIME_TYPES
- আপনার অ্যাপ্লিকেশনটি অনুরোধ করছে এমন ফাইলগুলির সাথে সম্পর্কিত মাইম প্রকারের একটি অ্যারে। আপনি যখন এটি অতিরিক্ত ব্যবহার করেন, আপনাকে অবশ্যই
"*/*"
এsetType()
এ প্রাথমিক মাইম প্রকারটি সেট করতে হবে। -
EXTRA_ALLOW_MULTIPLE
- একটি বুলিয়ান যা ব্যবহারকারী একবারে একাধিক ফাইল নির্বাচন করতে পারে কিনা তা ঘোষণা করে।
-
EXTRA_TITLE
- প্রাথমিক ফাইলের নাম নির্দিষ্ট করতে
ACTION_CREATE_DOCUMENT
সাথে ব্যবহারের জন্য। -
EXTRA_LOCAL_ONLY
- একটি বুলিয়ান যা ঘোষণা করে যে প্রত্যাবর্তিত ফাইলটি কোনও দূরবর্তী পরিষেবা থেকে ডাউনলোডের প্রয়োজনের চেয়ে সরাসরি ডিভাইস থেকে সরাসরি উপলব্ধ থাকতে হবে কিনা তা ঘোষণা করে।
-
- শ্রেণী
-
CATEGORY_OPENABLE
- কেবলমাত্র "ওপেনেবল" ফাইলগুলি ফিরিয়ে দিতে যা
openFileDescriptor()
সহ ফাইল স্ট্রিম হিসাবে প্রতিনিধিত্ব করা যেতে পারে।
-
- অ্যাকশন
-
ACTION_RESERVE_TAXI_RESERVATION
- ডেটা URI
- কোনোটিই নয়
- MIME প্রকার
- কোনোটিই নয়
- অতিরিক্ত
- কোনোটিই নয়
- অ্যাকশন
-
ACTION_VIEW
- ডেটা ইউআরআই স্কিম
-
geo: latitude , longitude
- প্রদত্ত দ্রাঘিমাংশ এবং অক্ষাংশে মানচিত্রটি দেখান।
উদাহরণ:
"geo:47.6,-122.3"
-
geo: latitude , longitude ?z= zoom
- নির্দিষ্ট জুম স্তরে প্রদত্ত দ্রাঘিমাংশ এবং অক্ষাংশে মানচিত্রটি দেখান। 1 এর একটি জুম স্তর পুরো পৃথিবী দেখায়, প্রদত্ত ল্যাট , এলএনজি কেন্দ্রিক। সর্বোচ্চ (নিকটতম) জুম স্তর 23।
উদাহরণ:
"geo:47.6,-122.3?z=11"
-
geo:0,0?q=lat,lng(label)
- স্ট্রিং লেবেল সহ প্রদত্ত দ্রাঘিমাংশ এবং অক্ষাংশে মানচিত্রটি দেখান।
উদাহরণ:
"geo:0,0?q=34.99,-106.61(Treasure)"
-
geo:0,0?q=my+street+address
- "আমার রাস্তার ঠিকানা" এর জন্য অবস্থানটি দেখান, যা একটি নির্দিষ্ট ঠিকানা বা অবস্থান ক্যোয়ারী হতে পারে।
উদাহরণ:
"geo:0,0?q=1600+Amphitheatre+Parkway%2C+CA"
দ্রষ্টব্য:
geo
ইউআরআই -তে পাস করা সমস্ত স্ট্রিং অবশ্যই এনকোড করা উচিত। উদাহরণস্বরূপ, স্ট্রিং1st & Pike, Seattle
1st%20%26%20Pike%2C%20Seattle
হয়ে যায়। স্ট্রিংয়ের স্পেসগুলি%20
দিয়ে এনকোড করা হয় বা প্লাস সাইন (+
) দিয়ে প্রতিস্থাপন করা হয়।
-
- MIME প্রকার
- কোনোটিই নয়
- অ্যাকশন
-
ACTION_VIEW
- ডেটা ইউআরআই স্কিম
-
file:
content:
http:
-
- MIME প্রকার
-
"audio/*"
"application/ogg"
"application/x-ogg"
"application/itunes"
- বা আপনার অ্যাপ্লিকেশনটির প্রয়োজন এমন অন্য কোনও।
-
- অ্যাকশন
-
INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH
- ডেটা ইউআরআই স্কিম
- কোনোটিই নয়
- MIME প্রকার
- কোনোটিই নয়
- অতিরিক্ত
-
MediaStore.EXTRA_MEDIA_FOCUS
(প্রয়োজনীয়) অনুসন্ধান মোডটি নির্দেশ করে: ব্যবহারকারী কোনও নির্দিষ্ট শিল্পী, অ্যালবাম, গান বা প্লেলিস্টের সন্ধান করছেন কিনা। বেশিরভাগ অনুসন্ধান মোডগুলি অতিরিক্ত অতিরিক্ত গ্রহণ করে। উদাহরণস্বরূপ, যদি ব্যবহারকারী কোনও নির্দিষ্ট গান শুনতে আগ্রহী হন তবে অভিপ্রায়টিতে তিনটি অতিরিক্ত অতিরিক্ত থাকতে পারে: গানের শিরোনাম, শিল্পী এবং অ্যালবাম। এই উদ্দেশ্যটি
EXTRA_MEDIA_FOCUS
প্রতিটি মানের জন্য নিম্নলিখিত অনুসন্ধান মোডগুলিকে সমর্থন করে:যে কোনও -
"vnd.android.cursor.item/*"
যে কোনও সংগীত খেলুন। প্রাপ্ত অ্যাপ্লিকেশনটি স্মার্ট পছন্দের উপর ভিত্তি করে কিছু সংগীত বাজায়, যেমন ব্যবহারকারী শেষ প্লেলিস্টটি শুনেছিল।
অতিরিক্ত অতিরিক্ত:
-
QUERY
(প্রয়োজনীয়): একটি খালি স্ট্রিং। এই অতিরিক্ত সর্বদা পিছনে সামঞ্জস্যের জন্য সরবরাহ করা হয়। বিদ্যমান অ্যাপ্লিকেশনগুলি যা অনুসন্ধান মোডগুলি সম্পর্কে জানে না তারা এই অভিপ্রায়টিকে একটি কাঠামোগত অনুসন্ধান হিসাবে প্রক্রিয়া করতে পারে।
-
অবরুদ্ধ -
"vnd.android.cursor.item/*"
একটি নির্দিষ্ট গানের, অ্যালবাম বা একটি অবিরাম অনুসন্ধানের ক্যোয়ারী থেকে জেনার খেলুন। অ্যাপ্লিকেশনগুলি যখন ব্যবহারকারীরা শুনতে চান এমন সামগ্রী সনাক্ত করতে না পারে তখন এই অনুসন্ধান মোডের সাথে একটি অভিপ্রায় তৈরি করতে পারে। সম্ভব হলে আরও নির্দিষ্ট অনুসন্ধান মোড ব্যবহার করুন।
অতিরিক্ত অতিরিক্ত:
-
QUERY
(প্রয়োজনীয়): একটি স্ট্রিং যা শিল্পীর কোনও সংমিশ্রণ, অ্যালবাম, গানের নাম বা জেনার রয়েছে।
-
জেনার -
Audio.Genres.ENTRY_CONTENT_TYPE
একটি নির্দিষ্ট ঘরানার সংগীত বাজান।
অতিরিক্ত অতিরিক্ত:
-
"android.intent.extra.genre"
(প্রয়োজনীয়) - জেনার। -
QUERY
(প্রয়োজনীয়): জেনার। এই অতিরিক্ত সর্বদা পিছনে সামঞ্জস্যের জন্য সরবরাহ করা হয়। বিদ্যমান অ্যাপ্লিকেশনগুলি যা অনুসন্ধান মোডগুলি সম্পর্কে জানে না তারা এই অভিপ্রায়টিকে একটি কাঠামোগত অনুসন্ধান হিসাবে প্রক্রিয়া করতে পারে।
-
শিল্পী -
Audio.Artists.ENTRY_CONTENT_TYPE
একটি নির্দিষ্ট শিল্পীর কাছ থেকে সংগীত বাজান।
অতিরিক্ত অতিরিক্ত:
-
EXTRA_MEDIA_ARTIST
(প্রয়োজনীয়): শিল্পী। -
"android.intent.extra.genre"
: জেনার। -
QUERY
(প্রয়োজনীয়): একটি স্ট্রিং যা শিল্পী বা ঘরানার কোনও সংমিশ্রণ ধারণ করে। এই অতিরিক্ত সর্বদা পিছনে সামঞ্জস্যের জন্য সরবরাহ করা হয়। বিদ্যমান অ্যাপ্লিকেশনগুলি যা অনুসন্ধান মোডগুলি সম্পর্কে জানে না তারা এই অভিপ্রায়টিকে একটি কাঠামোগত অনুসন্ধান হিসাবে প্রক্রিয়া করতে পারে।
-
অ্যালবাম -
Audio.Albums.ENTRY_CONTENT_TYPE
একটি নির্দিষ্ট অ্যালবাম থেকে সংগীত খেলুন।
অতিরিক্ত অতিরিক্ত:
-
EXTRA_MEDIA_ALBUM
(প্রয়োজনীয়): অ্যালবাম। -
EXTRA_MEDIA_ARTIST
: শিল্পী। -
"android.intent.extra.genre"
: জেনার। -
QUERY
(প্রয়োজনীয়): একটি স্ট্রিং যা অ্যালবাম বা শিল্পীর কোনও সংমিশ্রণ ধারণ করে। এই অতিরিক্ত সর্বদা পিছনে সামঞ্জস্যের জন্য সরবরাহ করা হয়। বিদ্যমান অ্যাপ্লিকেশনগুলি যা অনুসন্ধান মোডগুলি সম্পর্কে জানে না তারা এই অভিপ্রায়টিকে একটি কাঠামোগত অনুসন্ধান হিসাবে প্রক্রিয়া করতে পারে।
-
গান -
"vnd.android.cursor.item/audio"
একটি বিশেষ গান খেলুন।
অতিরিক্ত অতিরিক্ত:
-
EXTRA_MEDIA_ALBUM
: অ্যালবাম। -
EXTRA_MEDIA_ARTIST
: শিল্পী। -
"android.intent.extra.genre"
: জেনার। -
EXTRA_MEDIA_TITLE
(প্রয়োজনীয়): গানের নাম। -
QUERY
(প্রয়োজনীয়): একটি স্ট্রিং যা অ্যালবাম, শিল্পী, জেনার বা শিরোনামের কোনও সংমিশ্রণ ধারণ করে। এই অতিরিক্ত সর্বদা পিছনে সামঞ্জস্যের জন্য সরবরাহ করা হয়। বিদ্যমান অ্যাপ্লিকেশনগুলি যা অনুসন্ধান মোডগুলি সম্পর্কে জানে না তারা এই অভিপ্রায়টিকে একটি কাঠামোগত অনুসন্ধান হিসাবে প্রক্রিয়া করতে পারে।
-
প্লেলিস্ট -
Audio.Playlists.ENTRY_CONTENT_TYPE
একটি নির্দিষ্ট প্লেলিস্ট বা একটি প্লেলিস্ট খেলুন যা অতিরিক্ত অতিরিক্ত দ্বারা নির্দিষ্ট কিছু মানদণ্ডের সাথে মেলে।
অতিরিক্ত অতিরিক্ত:
-
EXTRA_MEDIA_ALBUM
: অ্যালবাম। -
EXTRA_MEDIA_ARTIST
: শিল্পী। -
"android.intent.extra.genre"
: জেনার। -
"android.intent.extra.playlist"
: প্লেলিস্ট। -
EXTRA_MEDIA_TITLE
: প্লেলিস্টের উপর ভিত্তি করে গানের নাম। -
QUERY
(প্রয়োজনীয়): একটি স্ট্রিং যা অ্যালবাম, শিল্পী, জেনার, প্লেলিস্ট বা শিরোনামের কোনও সংমিশ্রণ ধারণ করে। এই অতিরিক্ত সর্বদা পিছনে সামঞ্জস্যের জন্য সরবরাহ করা হয়। বিদ্যমান অ্যাপ্লিকেশনগুলি যা অনুসন্ধান মোডগুলি সম্পর্কে জানে না তারা এই অভিপ্রায়টিকে একটি কাঠামোগত অনুসন্ধান হিসাবে প্রক্রিয়া করতে পারে।
-
-
- অ্যাকশন
-
ACTION_CREATE_NOTE
- ডেটা ইউআরআই স্কিম
- কোনোটিই নয়
- MIME প্রকার
-
PLAIN_TEXT_TYPE
- "*/*"
- অতিরিক্ত
-
EXTRA_NAME
- একটি স্ট্রিং নোটের শিরোনাম বা বিষয় নির্দেশ করে।
-
EXTRA_TEXT
- নোটের পাঠ্য নির্দেশ করে একটি স্ট্রিং।
-
- অ্যাকশন
-
ACTION_DIAL
- ডায়ালার বা ফোন অ্যাপটি খোলে। -
ACTION_CALL
- একটি ফোন কল রাখে (CALL_PHONE
অনুমতি প্রয়োজন)
-
- ডেটা ইউআরআই স্কিম
-
tel:
-
voicemail:
-
- MIME প্রকার
- কোনোটিই নয়
-
tel:2125551212
-
tel:(212) 555 1212
- অ্যাকশন
-
"com.google.android.gms.actions.SEARCH_ACTION"
- গুগল ভয়েস ক্রিয়া থেকে অনুসন্ধান অনুসন্ধানগুলি সমর্থন করুন।
-
- অতিরিক্ত
-
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:
smsto:
mms:
mmsto:
এই স্কিমগুলি সমস্ত একইভাবে পরিচালিত হয়।
-
- MIME প্রকার
-
"text/plain"
"image/*"
"video/*"
-
- অতিরিক্ত
-
"subject"
- বার্তার বিষয়টির জন্য একটি স্ট্রিং (সাধারণত কেবল এমএমএসের জন্য)।
-
"sms_body"
- পাঠ্য বার্তার জন্য একটি স্ট্রিং।
-
EXTRA_STREAM
- সংযুক্ত করতে চিত্র বা ভিডিওর দিকে নির্দেশ করে একটি
Uri
। যদিACTION_SEND_MULTIPLE
অ্যাকশনটি ব্যবহার করে, এই অতিরিক্তটিUri
অবজেক্টগুলির একটিArrayList
যা সংযুক্ত করার জন্য চিত্র বা ভিডিওগুলিতে নির্দেশ করে।
-
- অ্যাকশন
-
ACTION_VIEW
- ডেটা ইউআরআই স্কিম
-
http:
https:
- MIME প্রকার
-
"text/plain"
"text/html"
"application/xhtml+xml"
"application/vnd.wap.xhtml+xml"
-
- বিকাশের জন্য একটি অ্যান্ড্রয়েড ডিভাইস সেট আপ করুন বা ভার্চুয়াল ডিভাইস ব্যবহার করুন।
- আপনার অ্যাপ্লিকেশনটির একটি সংস্করণ ইনস্টল করুন যা আপনি সমর্থন করতে চান এমন অভিপ্রায়গুলি পরিচালনা করে।
-
adb
ব্যবহার করে একটি অভিপ্রায় জ্বালান:adb shell am start -a
-t -d \ -e -n যেমন:
adb shell am start -a android.intent.action.DIAL \ -d tel:555-5555 -n org.example.MyApp/.MyActivity
- আপনি যদি প্রয়োজনীয় অভিপ্রায় ফিল্টারগুলি সংজ্ঞায়িত করেন তবে অভিপ্রায়টি পরিচালনা করুন।
উদাহরণের উদ্দেশ্য:
কোটলিন
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) } }
জাভা
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); } }
উদাহরন ফিল্টার:
...> android:name="com.google.android.gms.actions.CREATE_NOTE" /> android:name="android.intent.category.DEFAULT" /> android:mimeType="*/*" />
ফোন
ফোন অ্যাপ্লিকেশানগুলির জন্য একটি কল শুরু করা একটি সাধারণ কাজ৷ নিম্নলিখিত বিভাগে তথ্য ব্যবহার করে এই ক্রিয়া সম্পাদন করার জন্য আপনার অ্যাপের ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করুন৷
একটি ফোন কল শুরু করুন
ফোন অ্যাপ খুলতে এবং একটি ফোন নম্বর ডায়াল করতে, ACTION_DIAL
অ্যাকশনটি ব্যবহার করুন এবং নিম্নলিখিত URI স্কিম ব্যবহার করে একটি ফোন নম্বর নির্দিষ্ট করুন৷ যখন ফোন অ্যাপটি খোলে, এটি ফোন নম্বর প্রদর্শন করে এবং ব্যবহারকারীকে ফোন কল শুরু করতে কল বোতামে ট্যাপ করতে হবে।
সরাসরি একটি ফোন কল করতে, ACTION_CALL
অ্যাকশনটি ব্যবহার করুন এবং নিম্নলিখিত URI স্কিমটি ব্যবহার করে একটি ফোন নম্বর নির্দিষ্ট করুন৷ ফোন অ্যাপ খোলে, এটি ফোন কল শুরু করে। ব্যবহারকারীকে কল বোতামে ট্যাপ করার দরকার নেই।
ACTION_CALL
অ্যাকশনের জন্য আপনাকে আপনার ম্যানিফেস্ট ফাইলে CALL_PHONE
অনুমতি যোগ করতে হবে:
android:name="android.permission.CALL_PHONE" />
বৈধ টেলিফোন নম্বরগুলি হল IETF RFC 3966- এ সংজ্ঞায়িত। বৈধ উদাহরণ নিম্নলিখিত অন্তর্ভুক্ত:
ফোন অ্যাপ্লিকেশানের ডায়লারটি স্কিমগুলিকে স্বাভাবিক করতে ভাল, যেমন টেলিফোন নম্বর৷ সুতরাং বর্ণিত স্কিমটি Uri.parse()
পদ্ধতিতে কঠোরভাবে প্রয়োজনীয় নয়। যাইহোক, যদি আপনি একটি স্কিম চেষ্টা না করে থাকেন বা এটি পরিচালনা করা যাবে কিনা তা নিশ্চিত না হন, পরিবর্তে Uri.fromParts()
পদ্ধতি ব্যবহার করুন।
উদাহরণের উদ্দেশ্য:
কোটলিন
fun dialPhoneNumber(phoneNumber: String) { val intent = Intent(Intent.ACTION_DIAL).apply { data = Uri.parse("tel:$phoneNumber") } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
জাভা
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
ব্যবহার করার পরামর্শ দিই না। পরিবর্তে, অ্যাপ-মধ্যস্থ অনুসন্ধানের জন্য Google সহকারীর অন্তর্নির্মিত সমর্থনের সুবিধা নিতে GET_THING
ক্রিয়াটি বাস্তবায়ন করুন৷ আরও তথ্যের জন্য, Google সহকারী অ্যাপ অ্যাকশন ডকুমেন্টেশন দেখুন।
উদাহরন ফিল্টার:
android:name=".SearchActivity"> android:name="com.google.android.gms.actions.SEARCH_ACTION"/> android:name="android.intent.category.DEFAULT"/>
একটি ওয়েব অনুসন্ধান সঞ্চালন
একটি ওয়েব অনুসন্ধান শুরু করতে, ACTION_WEB_SEARCH
অ্যাকশনটি ব্যবহার করুন এবং SearchManager.QUERY
এ অনুসন্ধান স্ট্রিংটি নির্দিষ্ট করুন৷
উদাহরণের উদ্দেশ্য:
কোটলিন
fun searchWeb(query: String) { val intent = Intent(Intent.ACTION_WEB_SEARCH).apply { putExtra(SearchManager.QUERY, query) } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
জাভা
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); } }
সেটিংস
সিস্টেম সেটিংস অ্যাপে একটি স্ক্রিন খুলতে যখন আপনার অ্যাপের ব্যবহারকারীকে কিছু পরিবর্তন করতে হবে, নিম্নলিখিত উদ্দেশ্যমূলক ক্রিয়াগুলির মধ্যে একটি ব্যবহার করুন:
উদাহরণের উদ্দেশ্য:
কোটলিন
fun openWifiSettings() { val intent = Intent(Settings.ACTION_WIFI_SETTINGS) if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
জাভা
public void openWifiSettings() { Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
টেক্সট মেসেজিং
একটি সংযুক্তি সহ একটি SMS/MMS বার্তা রচনা করা টেক্সট মেসেজিং অ্যাপগুলির জন্য একটি সাধারণ কাজ৷ নিম্নলিখিত বিভাগে তথ্য ব্যবহার করে এই ক্রিয়া সম্পাদন করার জন্য আপনার অ্যাপের ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করুন৷
সংযুক্তি সহ একটি SMS/MMS বার্তা রচনা করুন
একটি এসএমএস বা এমএমএস টেক্সট মেসেজ শুরু করতে, নিম্নলিখিত একটি উদ্দেশ্যমূলক ক্রিয়া ব্যবহার করুন এবং নিম্নলিখিত অতিরিক্ত কীগুলি ব্যবহার করে ফোন নম্বর, বিষয় এবং মেসেজের বডির মতো বার্তার বিবরণ নির্দিষ্ট করুন৷
উদাহরণের উদ্দেশ্য:
কোটলিন
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) } }
জাভা
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:"
ডেটা স্কিম অন্তর্ভুক্ত করুন:
কোটলিন
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) } }
জাভা
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); } }
উদাহরন ফিল্টার:
...> android:name="android.intent.action.SEND" /> android:type="text/plain" /> android:type="image/*" /> android:name="android.intent.category.DEFAULT" />
দ্রষ্টব্য: আপনি যদি একটি SMS/MMS মেসেজিং অ্যাপ ডেভেলপ করেন, তাহলে Android 4.4 এবং উচ্চতর সংস্করণে ডিফল্ট SMS অ্যাপ হিসেবে উপলব্ধ হওয়ার জন্য আপনাকে অবশ্যই কিছু অতিরিক্ত অ্যাকশনের জন্য অভিপ্রায় ফিল্টার প্রয়োগ করতে হবে। আরও তথ্যের জন্য, Telephony
ডকুমেন্টেশন দেখুন।
ওয়েব ব্রাউজার
একটি ওয়েব URL লোড করা ওয়েব ব্রাউজার অ্যাপগুলির জন্য একটি সাধারণ ক্রিয়া। নিম্নলিখিত বিভাগে তথ্য ব্যবহার করে এই ক্রিয়া সম্পাদন করার জন্য আপনার অ্যাপের ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করুন৷
একটি ওয়েব URL লোড করুন
একটি ওয়েব পৃষ্ঠা খুলতে, ACTION_VIEW
অ্যাকশনটি ব্যবহার করুন এবং উদ্দেশ্য ডেটাতে ওয়েব URLটি নির্দিষ্ট করুন৷
উদাহরণের উদ্দেশ্য:
কোটলিন
fun openWebPage(url: String) { val webpage: Uri = Uri.parse(url) val intent = Intent(Intent.ACTION_VIEW, webpage) if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
জাভা
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); } }
উদাহরন ফিল্টার:
...> android:name="android.intent.action.VIEW" /> android:scheme="http" android:host="www.example.com" /> android:name="android.intent.category.DEFAULT" /> android:name="android.intent.category.BROWSABLE" />
টিপ: যদি আপনার অ্যান্ড্রয়েড অ্যাপ আপনার ওয়েব সাইটের মতো কার্যকারিতা প্রদান করে, তাহলে আপনার ওয়েব সাইটে নির্দেশ করে এমন URLগুলির জন্য একটি অভিপ্রায় ফিল্টার অন্তর্ভুক্ত করুন৷ তারপরে, যদি ব্যবহারকারীরা আপনার অ্যাপ ইনস্টল করে থাকে, আপনার ওয়েব পৃষ্ঠার পরিবর্তে ইমেল বা অন্যান্য ওয়েব পৃষ্ঠাগুলির লিঙ্কগুলি আপনার ওয়েব সাইটের দিকে নির্দেশ করে আপনার Android অ্যাপ খুলবে৷ অ্যান্ড্রয়েড অ্যাপ লিংক হ্যান্ডলিং এ আরও জানুন।
অ্যান্ড্রয়েড 12 (এপিআই লেভেল 31) থেকে শুরু করে, একটি সাধারণ ওয়েব অভিপ্রায় আপনার অ্যাপে কোনো কার্যকলাপের সমাধান করে তখনই যদি আপনার অ্যাপটি সেই ওয়েব অভিপ্রায়ে থাকা নির্দিষ্ট ডোমেনের জন্য অনুমোদিত হয়। যদি আপনার অ্যাপটি ডোমেনের জন্য অনুমোদিত না হয়, তবে ওয়েব অভিপ্রায় ব্যবহারকারীর ডিফল্ট ব্রাউজার অ্যাপে সমাধান করে।
অ্যান্ড্রয়েড ডিবাগ ব্রিজ দিয়ে উদ্দেশ্য যাচাই করুন
আপনি যে ইন্টেন্টগুলিকে সমর্থন করতে চান তাতে আপনার অ্যাপটি সাড়া দেয় তা যাচাই করতে, আপনি নিম্নলিখিতগুলি করে নির্দিষ্ট ইন্টেন্টগুলি ফায়ার করতে adb
টুল ব্যবহার করতে পারেন:
আরও তথ্যের জন্য, ইস্যু শেল কমান্ড দেখুন।
,একটি অভিপ্রায় আপনাকে একটি Intent
অবজেক্টে "একটি মানচিত্র দেখুন" বা "একটি ছবি তুলুন" এর মতো একটি কর্মের বর্ণনা দিয়ে অন্য অ্যাপে একটি কার্যকলাপ শুরু করতে দেয়৷ এই ধরনের অভিপ্রায়কে একটি অন্তর্নিহিত অভিপ্রায় বলা হয় কারণ এটি শুরু করার জন্য অ্যাপের উপাদান নির্দিষ্ট করে না, বরং একটি ক্রিয়া নির্দিষ্ট করে এবং কিছু ডেটা প্রদান করে যার সাহায্যে ক্রিয়াটি সম্পাদন করা যায়।
আপনি যখন startActivity()
বা startActivityForResult()
কে কল করেন এবং এটি একটি অন্তর্নিহিত অভিপ্রায়টি পাস করেন, সিস্টেমটি এমন একটি অ্যাপ্লিকেশনটির উদ্দেশ্যটি সমাধান করে যা উদ্দেশ্যটি পরিচালনা করতে পারে এবং এর সাথে সম্পর্কিত Activity
শুরু করে। যদি এমন একাধিক অ্যাপ্লিকেশন থাকে যা উদ্দেশ্যটি পরিচালনা করতে পারে তবে সিস্টেমটি ব্যবহারকারীকে কোন অ্যাপ্লিকেশনটি ব্যবহার করতে হবে তা বাছাই করার জন্য একটি ডায়ালগ দিয়ে উপস্থাপন করে।
এই পৃষ্ঠাটি বেশ কয়েকটি অন্তর্নিহিত অভিপ্রায় বর্ণনা করে যা আপনি সাধারণ ক্রিয়াগুলি সম্পাদন করতে ব্যবহার করতে পারেন, যা অ্যাপ্লিকেশনটির ধরণ দ্বারা সংগঠিত যা উদ্দেশ্যটি পরিচালনা করে। প্রতিটি বিভাগও দেখায় যে কীভাবে আপনি ক্রিয়াটি সম্পাদন করার জন্য আপনার অ্যাপ্লিকেশনটির দক্ষতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করতে পারেন।
সাবধানতা: যদি ডিভাইসে কোনও অ্যাপ্লিকেশন না থাকে যা একটি অন্তর্নিহিত উদ্দেশ্য পেতে পারে, তখন একটি অ্যাপ্লিকেশন ক্র্যাশ হয়ে যায় যখন এটি startActivity()
বলে। প্রথমে যাচাই করার জন্য যে কোনও অ্যাপ্লিকেশনটি অভিপ্রায় গ্রহণের জন্য বিদ্যমান রয়েছে, আপনার Intent
অবজেক্টে resolveActivity()
কল করুন। যদি ফলাফলটি নন-নুল হয় তবে কমপক্ষে একটি অ্যাপ্লিকেশন রয়েছে যা উদ্দেশ্যটি পরিচালনা করতে পারে এবং এটি startActivity()
কল করা নিরাপদ। যদি ফলাফলটি নাল হয় তবে অভিপ্রায়টি ব্যবহার করবেন না এবং যদি সম্ভব হয় তবে বৈশিষ্ট্যটি অক্ষম করুন যা উদ্দেশ্যটি অনুরোধ করে।
আপনি কীভাবে উদ্দেশ্য বা অভিপ্রায় ফিল্টার তৈরি করবেন তার সাথে আপনি যদি পরিচিত না হন তবে প্রথমে ইনটেন্টস এবং ইনটেন্ট ফিল্টারগুলি পড়ুন।
আপনার বিকাশের হোস্ট থেকে এই পৃষ্ঠায় তালিকাভুক্ত অভিপ্রায়গুলি কীভাবে গুলি চালাতে হয় তা শিখতে, অ্যান্ড্রয়েড ডিবাগ ব্রিজ বিভাগের সাথে যাচাইয়ের উদ্দেশ্যগুলি দেখুন।
গুগল ভয়েস ক্রিয়া
গুগল ভয়েস অ্যাকশনগুলি ভয়েস কমান্ডের প্রতিক্রিয়া হিসাবে এই পৃষ্ঠায় তালিকাভুক্ত কিছু অভিপ্রায়কে আগুন দেয়। আরও তথ্যের জন্য, সিস্টেম ভয়েস ক্রিয়া দিয়ে শুরু করুন দেখুন।
অ্যালার্ম ঘড়ি
প্রতিটি ক্রিয়াকলাপ সম্পাদন করার জন্য আপনার অ্যাপ্লিকেশনটির দক্ষতার বিজ্ঞাপন দেওয়ার জন্য আপনাকে একটি অভিপ্রায় ফিল্টার তৈরি করতে প্রয়োজনীয় তথ্য সহ অ্যালার্ম ক্লক অ্যাপ্লিকেশনগুলির জন্য সাধারণ ক্রিয়াগুলি রয়েছে।
একটি অ্যালার্ম তৈরি করুন
একটি নতুন অ্যালার্ম তৈরি করতে, ACTION_SET_ALARM
অ্যাকশনটি ব্যবহার করুন এবং নিম্নলিখিত অতিরিক্তগুলি ব্যবহার করে সময় এবং বার্তার মতো অ্যালার্মের বিশদ নির্দিষ্ট করুন।
দ্রষ্টব্য: কেবলমাত্র ঘন্টা, মিনিট এবং বার্তার অতিরিক্তগুলি অ্যান্ড্রয়েড 2.3 (এপিআই স্তর 9) এবং কম এ উপলব্ধ। অন্যান্য অতিরিক্তগুলি প্ল্যাটফর্মের উচ্চতর সংস্করণে উপলব্ধ।
উদাহরণ অভিপ্রায়:
কোটলিন
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) } }
জাভা
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
অনুমতি থাকতে হবে:
android:name="com.android.alarm.permission.SET_ALARM" />
উদাহরণ অভিপ্রায় ফিল্টার:
...> android:name="android.intent.action.SET_ALARM" /> android:name="android.intent.category.DEFAULT" />
একটি টাইমার তৈরি করুন
একটি কাউন্টডাউন টাইমার তৈরি করতে, ACTION_SET_TIMER
অ্যাকশনটি ব্যবহার করুন এবং নিম্নলিখিত অতিরিক্তগুলি ব্যবহার করে সময়কালের মতো টাইমার বিশদ নির্দিষ্ট করুন।
দ্রষ্টব্য: এই অভিপ্রায়টি অ্যান্ড্রয়েড 4.4 (এপিআই স্তর 19) এবং উচ্চতর এ উপলব্ধ।
উদাহরণ অভিপ্রায়:
কোটলিন
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) } }
জাভা
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
অনুমতি থাকতে হবে:
android:name="com.android.alarm.permission.SET_ALARM" />
উদাহরণ অভিপ্রায় ফিল্টার:
...> android:name="android.intent.action.SET_TIMER" /> android:name="android.intent.category.DEFAULT" />
সমস্ত অ্যালার্ম দেখান
অ্যালার্মগুলির তালিকাটি দেখানোর জন্য, ACTION_SHOW_ALARMS
অ্যাকশনটি ব্যবহার করুন।
যদিও অনেকগুলি অ্যাপ্লিকেশন এই অভিপ্রায়টি আহ্বান করে না, কারণ এটি প্রাথমিকভাবে সিস্টেম অ্যাপ্লিকেশন দ্বারা ব্যবহৃত হয়, অ্যালার্ম ঘড়ি হিসাবে আচরণ করে এমন কোনও অ্যাপ্লিকেশন এই অভিপ্রায় ফিল্টারটি প্রয়োগ করতে পারে এবং বর্তমান অ্যালার্মগুলির তালিকা দেখিয়ে প্রতিক্রিয়া জানাতে পারে।
দ্রষ্টব্য: এই অভিপ্রায়টি অ্যান্ড্রয়েড 4.4 (এপিআই স্তর 19) এবং উচ্চতর এ উপলব্ধ।
উদাহরণ অভিপ্রায় ফিল্টার:
...> android:name="android.intent.action.SHOW_ALARMS" /> android:name="android.intent.category.DEFAULT" />
ক্যালেন্ডার
একটি ইভেন্ট যুক্ত করা ক্যালেন্ডার অ্যাপ্লিকেশনগুলির জন্য একটি সাধারণ ক্রিয়া। নিম্নলিখিত বিভাগে তথ্য ব্যবহার করে এই ক্রিয়াটি সম্পাদন করার জন্য আপনার অ্যাপ্লিকেশনটির দক্ষতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করুন।
একটি ক্যালেন্ডার ইভেন্ট যুক্ত করুন
ব্যবহারকারীর ক্যালেন্ডারে একটি নতুন ইভেন্ট যুক্ত করতে, ACTION_INSERT
অ্যাকশনটি ব্যবহার করুন এবং Events.CONTENT_URI
ব্যবহার করে ইউআরআই ডেটা নির্দিষ্ট করুন ont কনটেন্ট_উরি। তারপরে আপনি নিম্নলিখিত অতিরিক্তগুলি ব্যবহার করে বিভিন্ন ইভেন্টের বিশদ নির্দিষ্ট করতে পারেন।
উদাহরণ অভিপ্রায়:
কোটলিন
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) } }
জাভা
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); } }
উদাহরণ অভিপ্রায় ফিল্টার:
...> android:name="android.intent.action.INSERT" /> android:mimeType="vnd.android.cursor.dir/event" /> android:name="android.intent.category.DEFAULT" />
ক্যামেরা
আপনার অ্যাপ্লিকেশনটির প্রতিটি ক্রিয়া সম্পাদন করার দক্ষতার বিজ্ঞাপন দেওয়ার জন্য আপনাকে একটি অভিপ্রায় ফিল্টার তৈরি করার জন্য প্রয়োজনীয় তথ্য সহ ক্যামেরা অ্যাপ্লিকেশনগুলির জন্য সাধারণ ক্রিয়াগুলি রয়েছে।
একটি ছবি বা ভিডিও ক্যাপচার করুন এবং এটি ফিরিয়ে দিন
একটি ক্যামেরা অ্যাপ্লিকেশন খুলতে এবং ফলাফলযুক্ত ফটো বা ভিডিও পেতে, ACTION_IMAGE_CAPTURE
বা ACTION_VIDEO_CAPTURE
অ্যাকশনটি ব্যবহার করুন। EXTRA_OUTPUT
অতিরিক্ত ক্ষেত্রে আপনি যেখানে ছবি বা ভিডিও সংরক্ষণ করতে ক্যামেরাটি চান সেখানে ইউআরআই অবস্থানটিও নির্দিষ্ট করুন।
যখন ক্যামেরা অ্যাপটি সফলভাবে আপনার ক্রিয়াকলাপের দিকে ফোকাস দেয় - অন্য কথায়, আপনার অ্যাপ্লিকেশনটি onActivityResult()
কলব্যাক গ্রহণ করে - আপনি EXTRA_OUTPUT
মান দিয়ে নির্দিষ্ট করা ইউআরআইতে ফটো বা ভিডিওটি অ্যাক্সেস করতে পারেন।
দ্রষ্টব্য: আপনি যখন কোনও ফটো ক্যাপচার করতে ACTION_IMAGE_CAPTURE
ব্যবহার করেন, তখন ক্যামেরাটি "data"
নামের একটি অতিরিক্ত ক্ষেত্রে Bitmap
হিসাবে সংরক্ষণ করা ফলাফলের Intent
ফটোটির একটি ডাউনস্কেলযুক্ত অনুলিপি বা থাম্বনেইলও ফিরিয়ে দিতে পারে।
উদাহরণ অভিপ্রায়:
কোটলিন
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. ... } }
জাভা
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. ... } }
অ্যান্ড্রয়েড 12 (এপিআই স্তর 31) বা উচ্চতর এ কাজ করার সময় এটি করার জন্য, নিম্নলিখিত অভিপ্রায় উদাহরণটি দেখুন।
উদাহরণ অভিপ্রায়:
কোটলিন
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. } }
জাভা
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
তৈরি করতে হয় তা সহ কোনও ফটো ক্যাপচারের জন্য এই অভিপ্রায়টি কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও তথ্যের জন্য, ফটো তুলুন বা ভিডিও নিন ।
উদাহরণ অভিপ্রায় ফিল্টার:
...> android:name="android.media.action.IMAGE_CAPTURE" /> android:name="android.intent.category.DEFAULT" />
এই অভিপ্রায়টি পরিচালনা করার সময়, আপনার ক্রিয়াকলাপটি আগত Intent
EXTRA_OUTPUT
অতিরিক্তের জন্য চেক করুন, তারপরে সেই অতিরিক্ত দ্বারা নির্দিষ্ট স্থানে ক্যাপচার করা চিত্র বা ভিডিও সংরক্ষণ করুন এবং একটি অতিরিক্ত "data"
নামক একটি সংকুচিত থাম্বনেইল অন্তর্ভুক্ত করে এমন একটি Intent
সহ setResult()
কল করুন।
স্টিল ইমেজ মোডে একটি ক্যামেরা অ্যাপ্লিকেশন শুরু করুন
স্টিল ইমেজ মোডে একটি ক্যামেরা অ্যাপ খুলতে, INTENT_ACTION_STILL_IMAGE_CAMERA
ক্যামেরা অ্যাকশনটি ব্যবহার করুন।
উদাহরণ অভিপ্রায়:
কোটলিন
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. } }
জাভা
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); } }
উদাহরণ অভিপ্রায় ফিল্টার:
...> android:name="android.media.action.STILL_IMAGE_CAMERA" /> android:name="android.intent.category.DEFAULT" />
ভিডিও মোডে একটি ক্যামেরা অ্যাপ্লিকেশন শুরু করুন
ভিডিও মোডে একটি ক্যামেরা অ্যাপ খুলতে, INTENT_ACTION_VIDEO_CAMERA
ক্যামেরা অ্যাকশনটি ব্যবহার করুন।
উদাহরণ অভিপ্রায়:
কোটলিন
fun capturePhoto() { val intent = Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA) if (intent.resolveActivity(packageManager) != null) { startActivityForResult(intent, REQUEST_IMAGE_CAPTURE) } }
জাভা
public void capturePhoto() { Intent intent = new Intent(MediaStore.INTENT_ACTION_VIDEO_CAMERA); if (intent.resolveActivity(getPackageManager()) != null) { startActivityForResult(intent, REQUEST_IMAGE_CAPTURE); } }
উদাহরণ অভিপ্রায় ফিল্টার:
...> android:name="android.media.action.VIDEO_CAMERA" /> android:name="android.intent.category.DEFAULT" />
পরিচিতি/লোক অ্যাপ্লিকেশন
প্রতিটি ক্রিয়াকলাপ সম্পাদন করার জন্য আপনার অ্যাপ্লিকেশনটির দক্ষতার বিজ্ঞাপন দেওয়ার জন্য আপনাকে একটি অভিপ্রায় ফিল্টার তৈরি করার জন্য প্রয়োজনীয় তথ্য সহ পরিচিতি পরিচালনার অ্যাপ্লিকেশনগুলির জন্য সাধারণ ক্রিয়াগুলি রয়েছে।
একটি পরিচিতি নির্বাচন করুন
ব্যবহারকারীকে একটি পরিচিতি নির্বাচন করতে এবং সমস্ত যোগাযোগের সমস্ত তথ্যে আপনার অ্যাপ্লিকেশন অ্যাক্সেস সরবরাহ করতে, ACTION_PICK
ক্রিয়াটি ব্যবহার করুন এবং Contacts.CONTENT_TYPE
মাইম প্রকারটি নির্দিষ্ট করুন Cont কনটেন্ট_ টাইপ।
আপনার onActivityResult()
কলব্যাকের কাছে বিতরণ করা ফলাফলের Intent
content:
ইউআরআই নির্বাচিত যোগাযোগের দিকে নির্দেশ করে। প্রতিক্রিয়া আপনার অ্যাপ্লিকেশনটি যোগাযোগ সরবরাহকারী এপিআই ব্যবহার করে সেই যোগাযোগটি পড়ার জন্য অস্থায়ী অনুমতি দেয়, এমনকি যদি আপনার অ্যাপ্লিকেশনটি READ_CONTACTS
অনুমতি অন্তর্ভুক্ত না করে।
টিপ: যদি আপনার যোগাযোগের তথ্যের একটি নির্দিষ্ট টুকরো যেমন কোনও ফোন নম্বর বা ইমেল ঠিকানা অ্যাক্সেসের প্রয়োজন হয় তবে পরিবর্তে নির্দিষ্ট যোগাযোগের ডেটা কীভাবে নির্বাচন করবেন সে সম্পর্কে পরবর্তী বিভাগটি দেখুন।
উদাহরণ অভিপ্রায়:
কোটলিন
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. //... } }
জাভা
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
সহ এই কৌশলটি commoncomondatakinds ক্লাসগুলি Contacts.CONTENT_TYPE
ব্যবহার করার চেয়ে আরও দক্ষ। কনটেন্ট_ টাইপ, যেমন পূর্ববর্তী বিভাগে দেখানো হয়েছে। ফলাফলটি আপনাকে পরিচিতি সরবরাহকারীর কাছে আরও জটিল ক্যোয়ারী সম্পাদনের প্রয়োজন ছাড়াই পছন্দসই ডেটাতে সরাসরি অ্যাক্সেস সরবরাহ করে।
আপনার onActivityResult()
কলব্যাকের কাছে বিতরণ করা ফলাফলের Intent
content:
ইউআরআই নির্বাচিত যোগাযোগের ডেটার দিকে নির্দেশ করে। প্রতিক্রিয়াটি আপনার অ্যাপ্লিকেশনটিকে সেই যোগাযোগের ডেটা পড়ার জন্য অস্থায়ী অনুমতি দেয় এমনকি যদি আপনার অ্যাপ্লিকেশনটি READ_CONTACTS
অনুমতি অন্তর্ভুক্ত না করে।
উদাহরণ অভিপ্রায়:
কোটলিন
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= 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. ... } } } }
জাভা
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:
ইউআরআই অভিপ্রায় ডেটা হিসাবে।
প্রাথমিকভাবে যোগাযোগের ইউআরআই পুনরুদ্ধার করার দুটি প্রাথমিক উপায় রয়েছে:
উদাহরণ অভিপ্রায়:
কোটলিন
fun viewContact(contactUri: Uri) { val intent = Intent(Intent.ACTION_VIEW, contactUri) if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
জাভা
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
ধ্রুবক দ্বারা নির্দিষ্ট অতিরিক্তগুলিতে কোনও পরিচিত যোগাযোগের তথ্য অন্তর্ভুক্ত করুন।
প্রাথমিকভাবে যোগাযোগটি ইউআরআই পুনরুদ্ধার করার দুটি প্রাথমিক উপায় রয়েছে:
উদাহরণ অভিপ্রায়:
কোটলিন
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) } }
জাভা
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); } }
কোনও যোগাযোগ কীভাবে সম্পাদনা করবেন সে সম্পর্কে আরও তথ্যের জন্য, উদ্দেশ্যগুলি ব্যবহার করে যোগাযোগগুলি সংশোধন করুন।
একটি যোগাযোগ sert োকান
একটি নতুন পরিচিতি সন্নিবেশ করতে, ACTION_INSERT
অ্যাকশনটি ব্যবহার করুন, Contacts.CONTENT_TYPE
নির্দিষ্ট করুন Cont কনটেন্ট_ টাইপ মাইম টাইপ হিসাবে এবং ContactsContract.Intents.Insert
ধ্রুবক দ্বারা নির্দিষ্ট অতিরিক্তগুলিতে কোনও পরিচিত যোগাযোগের তথ্য অন্তর্ভুক্ত করুন।
উদাহরণ অভিপ্রায়:
কোটলিন
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) } }
জাভা
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); } }
কীভাবে কোনও যোগাযোগ সন্নিবেশ করবেন সে সম্পর্কে আরও তথ্যের জন্য, উদ্দেশ্যগুলি ব্যবহার করে যোগাযোগগুলি সংশোধন করুন।
ইমেইল
Al চ্ছিক সংযুক্তি সহ একটি ইমেল রচনা করা ইমেল অ্যাপ্লিকেশনগুলির জন্য একটি সাধারণ ক্রিয়া। নিম্নলিখিত বিভাগে তথ্য ব্যবহার করে এই ক্রিয়াটি সম্পাদন করার জন্য আপনার অ্যাপ্লিকেশনটির দক্ষতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করুন।
Al চ্ছিক সংযুক্তি সহ একটি ইমেল রচনা করুন
কোনও ইমেল রচনা করতে, আপনি সংযুক্তিগুলি অন্তর্ভুক্ত করবেন কিনা তার উপর ভিত্তি করে নিম্নলিখিত ক্রিয়াকলাপগুলির মধ্যে একটি ব্যবহার করুন এবং তালিকাভুক্ত অতিরিক্ত কীগুলি ব্যবহার করে প্রাপক এবং বিষয় হিসাবে ইমেল বিশদ অন্তর্ভুক্ত করুন।
উদাহরণ অভিপ্রায়:
কোটলিন
fun composeEmail(addresses: Array, 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) } }
জাভা
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:"
ডেটা স্কিমটি অন্তর্ভুক্ত করুন:
কোটলিন
fun composeEmail(addresses: Array, 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) } }
জাভা
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); } }
উদাহরণ অভিপ্রায় ফিল্টার:
...> android:name="android.intent.action.SEND" /> android:type="*/*" /> android:name="android.intent.category.DEFAULT" /> android:name="android.intent.action.SENDTO" /> android:scheme="mailto" /> android:name="android.intent.category.DEFAULT" />
ফাইল স্টোরেজ
আপনার অ্যাপ্লিকেশনটির প্রতিটি ক্রিয়াকলাপ সম্পাদন করার দক্ষতার বিজ্ঞাপন দেওয়ার জন্য আপনাকে একটি অভিপ্রায় ফিল্টার তৈরি করার জন্য প্রয়োজনীয় তথ্য সহ ফাইল স্টোরেজ অ্যাপ্লিকেশনগুলির জন্য সাধারণ ক্রিয়াগুলি রয়েছে।
একটি নির্দিষ্ট ধরণের ফাইল পুনরুদ্ধার করুন
ব্যবহারকারী কোনও ডকুমেন্ট বা ফটো যেমন কোনও ফাইল নির্বাচন করুন এবং আপনার অ্যাপ্লিকেশনটিতে একটি রেফারেন্স ফেরত দেওয়ার অনুরোধ করতে, ACTION_GET_CONTENT
অ্যাকশনটি ব্যবহার করুন এবং আপনার পছন্দসই মাইম প্রকারটি নির্দিষ্ট করুন। আপনার অ্যাপ্লিকেশনটিতে ফিরে আসা ফাইল রেফারেন্সটি আপনার ক্রিয়াকলাপের বর্তমান জীবনচক্রের ক্ষণস্থায়ী, সুতরাং আপনি যদি পরে এটি অ্যাক্সেস করতে চান তবে আপনাকে অবশ্যই একটি অনুলিপি আমদানি করতে হবে যা আপনি পরে পড়তে পারেন।
এই উদ্দেশ্যটি ব্যবহারকারীকে প্রক্রিয়াটিতে একটি নতুন ফাইল তৈরি করতে দেয়। উদাহরণস্বরূপ, বিদ্যমান ফটো নির্বাচন করার পরিবর্তে, ব্যবহারকারী ক্যামেরা সহ একটি নতুন ফটো ক্যাপচার করতে পারে।
আপনার onActivityResult()
পদ্ধতিতে বিতরণ করা ফলাফলের অভিপ্রায়টিতে ফাইলের দিকে নির্দেশ করে একটি ইউআরআই সহ ডেটা অন্তর্ভুক্ত রয়েছে। ইউআরআই কিছু হতে পারে, যেমন http:
ইউআরআই, file:
ইউআরআই, বা content:
ইউআরআই। তবে, আপনি যদি কোনও সামগ্রী সরবরাহকারী (একটি content:
ইউআরআই) থেকে অ্যাক্সেসযোগ্য কেবল তাদের মধ্যে নির্বাচনযোগ্য ফাইলগুলি সীমাবদ্ধ করতে চান এবং এটি openFileDescriptor()
সহ একটি ফাইল স্ট্রিম হিসাবে উপলব্ধ, আপনার অভিপ্রায়টিতে CATEGORY_OPENABLE
বিভাগ যুক্ত করুন।
অ্যান্ড্রয়েড 4.3 (এপিআই স্তর 18) এবং উচ্চতর, আপনি ব্যবহারকারীকে true
সাথে সেট করে EXTRA_ALLOW_MULTIPLE
যুক্ত করে একাধিক ফাইল নির্বাচন করতে পারেন। তারপরে আপনি getClipData()
দ্বারা ফিরে আসা ClipData
অবজেক্টে নির্বাচিত প্রতিটি ফাইল অ্যাক্সেস করতে পারেন।
একটি ফটো পেতে অভিপ্রায় উদাহরণ:
কোটলিন
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. ... } }
জাভা
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. ... } }
একটি ফটো ফিরিয়ে দিতে অভিপ্রায় ফিল্টার উদাহরণ:
...> android:name="android.intent.action.GET_CONTENT" /> android:type="image/*" /> android:name="android.intent.category.DEFAULT" /> android:name="android.intent.category.OPENABLE" />
একটি নির্দিষ্ট ধরণের ফাইল খুলুন
অ্যান্ড্রয়েড ৪.৪ বা তার বেশি উচ্চতর দিকে চলার সময় আপনি যখন ACTION_GET_CONTENT
ACTION_OPEN_DOCUMENT
অ্যাকশনটি ব্যবহার করে অন্য অ্যাপ্লিকেশন দ্বারা পরিচালিত একটি ফাইল খোলার জন্য অনুরোধ করতে পারেন এবং একটি এমআইএম টাইপ নির্দিষ্ট করে কোনও ফাইলের অনুলিপি পুনরুদ্ধার করার পরিবর্তে আপনার অ্যাপ্লিকেশনটিতে আপনাকে অবশ্যই আমদানি করতে হবে। ব্যবহারকারীকে এমন একটি নতুন ডকুমেন্ট তৈরি করতে দিন যা আপনার অ্যাপ্লিকেশনটি লিখতে পারে, পরিবর্তে ACTION_CREATE_DOCUMENT
অ্যাকশনটি ব্যবহার করুন।
উদাহরণস্বরূপ, বিদ্যমান পিডিএফ ডকুমেন্টগুলি থেকে নির্বাচন করার পরিবর্তে, ACTION_CREATE_DOCUMENT
অভিপ্রায় ব্যবহারকারীদের যেখানে তারা একটি নতুন ডকুমেন্ট তৈরি করতে চান তা নির্বাচন করতে দেয় যেমন অন্য কোনও অ্যাপ্লিকেশনটির মধ্যে যা নথির স্টোরেজ পরিচালনা করে। আপনার অ্যাপ্লিকেশনটি নতুন ডকুমেন্টটি যেখানে লিখতে পারে তার ইউআরআই অবস্থানটি গ্রহণ করে।
ACTION_GET_CONTENT
অ্যাকশন থেকে আপনার onActivityResult()
পদ্ধতিতে বিতরণ করা অভিপ্রায়টি যে কোনও ধরণের ইউআরআই ফিরিয়ে দিতে পারে, ফলাফলটি ACTION_OPEN_DOCUMENT
এবং ACTION_CREATE_DOCUMENT
থেকে সর্বদা নির্বাচিত ফাইলটিকে একটি content:
ইউআরআই যা একটি DocumentsProvider
দ্বারা সমর্থিত। আপনি openFileDescriptor()
দিয়ে ফাইলটি খুলতে পারেন এবং DocumentsContract.Document
থেকে কলামগুলি ব্যবহার করে এর বিশদটি অনুসন্ধান করতে পারেন।
প্রত্যাবর্তিত ইউআরআই আপনার অ্যাপ্লিকেশনটিকে দীর্ঘমেয়াদী পঠন ফাইলটিতে অ্যাক্সেস দেয়, সম্ভবত লেখার অ্যাক্সেস সহ। আপনি যখন আপনার অ্যাপ্লিকেশনটিতে একটি অনুলিপি তৈরি না করে কোনও বিদ্যমান ফাইল পড়তে চান বা যখন আপনি কোনও ফাইল খুলতে এবং সম্পাদনা করতে চান তখন ACTION_OPEN_DOCUMENT
অ্যাকশনটি বিশেষভাবে কার্যকর।
আপনি true
সেট করে ব্যবহারকারীকে EXTRA_ALLOW_MULTIPLE
যুক্ত করে একাধিক ফাইল নির্বাচন করতে পারেন। যদি ব্যবহারকারী কেবল একটি আইটেম নির্বাচন করে তবে আপনি getData()
থেকে আইটেমটি পুনরুদ্ধার করতে পারেন। যদি ব্যবহারকারী একাধিক আইটেম নির্বাচন করে, তবে getData()
নাল ফিরে আসে এবং আপনাকে অবশ্যই প্রতিটি আইটেমকে ClipData
অবজেক্ট থেকে পুনরুদ্ধার করতে হবে যা getClipData()
দ্বারা ফিরে আসে।
দ্রষ্টব্য: আপনার অভিপ্রায় অবশ্যই একটি মাইম টাইপ নির্দিষ্ট করতে হবে এবং অবশ্যই CATEGORY_OPENABLE
বিভাগটি ঘোষণা করতে হবে। যদি উপযুক্ত হয় তবে আপনি EXTRA_MIME_TYPES
অতিরিক্তের সাথে মাইম প্রকারের একটি অ্যারে যুক্ত করে একাধিক মাইম টাইপ নির্দিষ্ট করতে পারেন - যদি আপনি এটি করেন তবে আপনাকে অবশ্যই "*/*"
এ setType()
এ প্রাথমিক মাইম টাইপ সেট করতে হবে।
একটি ফটো পেতে অভিপ্রায় উদাহরণ:
কোটলিন
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. ... } }
জাভা
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"
) এর জন্য একটি অভিপ্রায় ফিল্টার অন্তর্ভুক্ত করতে হবে, নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
... android:grantUriPermissions="true" android:exported="true" android:permission="android.permission.MANAGE_DOCUMENTS"> android:name="android.content.action.DOCUMENTS_PROVIDER" />
অন্যান্য অ্যাপ্লিকেশনগুলি থেকে আপনার অ্যাপ্লিকেশন দ্বারা পরিচালিত ফাইলগুলি কীভাবে তৈরি করা যায় সে সম্পর্কে আরও তথ্যের জন্য, স্টোরেজ অ্যাক্সেস ফ্রেমওয়ার্ক ব্যবহার করে খোলা ফাইলগুলি পড়ুন।
স্থানীয় ক্রিয়া
গাড়ি কল করা একটি সাধারণ স্থানীয় ক্রিয়া। নিম্নলিখিত বিভাগে তথ্য ব্যবহার করে এই ক্রিয়াটি সম্পাদন করার জন্য আপনার অ্যাপ্লিকেশনটির দক্ষতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করুন।
একটি গাড়ী কল
একটি ট্যাক্সি কল করতে, ACTION_RESERVE_TAXI_RESERVATION
অ্যাকশনটি ব্যবহার করুন।
দ্রষ্টব্য: অ্যাপ্লিকেশনগুলি অবশ্যই এই ক্রিয়াটি শেষ করার আগে ব্যবহারকারীর কাছ থেকে নিশ্চিতকরণের জন্য জিজ্ঞাসা করতে হবে।
উদাহরণ অভিপ্রায়:
কোটলিন
fun callCar() { val intent = Intent(ReserveIntents.ACTION_RESERVE_TAXI_RESERVATION) if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
জাভা
public void callCar() { Intent intent = new Intent(ReserveIntents.ACTION_RESERVE_TAXI_RESERVATION); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
উদাহরণ অভিপ্রায় ফিল্টার:
...> android:name="com.google.android.gms.actions.RESERVE_TAXI_RESERVATION" /> android:name="android.intent.category.DEFAULT" />
মানচিত্র
মানচিত্রে একটি অবস্থান দেখানো মানচিত্র অ্যাপ্লিকেশনগুলির জন্য একটি সাধারণ ক্রিয়া। নিম্নলিখিত বিভাগে তথ্য ব্যবহার করে এই ক্রিয়াটি সম্পাদন করার জন্য আপনার অ্যাপ্লিকেশনটির দক্ষতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করুন।
একটি মানচিত্রে একটি অবস্থান দেখান
একটি মানচিত্র খোলার জন্য, ACTION_VIEW
অ্যাকশনটি ব্যবহার করুন এবং নিম্নলিখিত স্কিমগুলির মধ্যে একটির সাথে অভিপ্রায় ডেটাতে অবস্থানের তথ্য নির্দিষ্ট করুন।
উদাহরণ অভিপ্রায়:
কোটলিন
fun showMap(geoLocation: Uri) { val intent = Intent(Intent.ACTION_VIEW).apply { data = geoLocation } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
জাভা
public void showMap(Uri geoLocation) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(geoLocation); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
উদাহরণ অভিপ্রায় ফিল্টার:
...> android:name="android.intent.action.VIEW" /> android:scheme="geo" /> android:name="android.intent.category.DEFAULT" />
সংগীত বা ভিডিও
প্রতিটি ক্রিয়াকলাপ সম্পাদন করার জন্য আপনার অ্যাপ্লিকেশনটির দক্ষতার বিজ্ঞাপন দেওয়ার জন্য আপনাকে একটি অভিপ্রায় ফিল্টার তৈরি করার জন্য প্রয়োজনীয় তথ্য সহ সংগীত এবং ভিডিও অ্যাপ্লিকেশনগুলির জন্য নিম্নলিখিতগুলি সাধারণ ক্রিয়াগুলি রয়েছে।
একটি মিডিয়া ফাইল খেলুন
একটি সঙ্গীত ফাইল খেলতে, ACTION_VIEW
অ্যাকশনটি ব্যবহার করুন এবং ইন্টেন্ট ডেটাতে ফাইলের ইউআরআই অবস্থান নির্দিষ্ট করুন।
উদাহরণ অভিপ্রায়:
কোটলিন
fun playMedia(file: Uri) { val intent = Intent(Intent.ACTION_VIEW).apply { data = file } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
জাভা
public void playMedia(Uri file) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(file); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
উদাহরণ অভিপ্রায় ফিল্টার:
...> android:name="android.intent.action.VIEW" /> android:type="audio/*" /> android:type="application/ogg" /> android:name="android.intent.category.DEFAULT" />
একটি অনুসন্ধান ক্যোয়ারির উপর ভিত্তি করে সংগীত খেলুন
অনুসন্ধানের ক্যোয়ারির উপর ভিত্তি করে সংগীত বাজানোর জন্য, INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH
অনুসন্ধান অভিপ্রায়টি ব্যবহার করুন। কোনও অ্যাপ্লিকেশন সঙ্গীত বাজানোর জন্য ব্যবহারকারীর ভয়েস কমান্ডের প্রতিক্রিয়া হিসাবে এই অভিপ্রায়টি গুলি করতে পারে। এই অভিপ্রায়ের জন্য প্রাপ্ত অ্যাপ্লিকেশনটি প্রদত্ত ক্যোয়ারির সাথে বিদ্যমান সামগ্রীর সাথে মেলে এবং সেই সামগ্রীটি বাজানো শুরু করার জন্য তার জায়গুলির মধ্যে একটি অনুসন্ধান সম্পাদন করে।
এই অভিপ্রায়টিতে EXTRA_MEDIA_FOCUS
স্ট্রিং অতিরিক্ত অন্তর্ভুক্ত করুন, যা উদ্দেশ্যে অনুসন্ধান মোড নির্দিষ্ট করে। উদাহরণস্বরূপ, অনুসন্ধান মোডটি কোনও শিল্পীর নাম বা গানের নামের জন্য অনুসন্ধানটি কিনা তা নির্দিষ্ট করতে পারে।
উদাহরণ অভিপ্রায়:
যদি ব্যবহারকারী কোনও নির্দিষ্ট শিল্পীর কাছ থেকে সংগীত শুনতে চান তবে একটি অনুসন্ধান অ্যাপ্লিকেশন নিম্নলিখিত উদ্দেশ্যটি তৈরি করতে পারে:
কোটলিন
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) } }
জাভা
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); } }
উদাহরণ অভিপ্রায় ফিল্টার:
...> android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH" /> android:name="android.intent.category.DEFAULT" />
আপনার ক্রিয়াকলাপে এই অভিপ্রায়টি পরিচালনা করার সময়, অনুসন্ধান মোডটি নির্ধারণের জন্য আগত Intent
EXTRA_MEDIA_FOCUS
অতিরিক্ত মানটি পরীক্ষা করুন। একবার আপনার ক্রিয়াকলাপ অনুসন্ধান মোডটি চিহ্নিত করার পরে, সেই নির্দিষ্ট অনুসন্ধান মোডের জন্য অতিরিক্ত অতিরিক্তগুলির মানগুলি পড়ুন। এই তথ্যের সাহায্যে, আপনার অ্যাপ্লিকেশনটি অনুসন্ধান ক্যোয়ারির সাথে মেলে এমন সামগ্রীটি খেলতে তার জায়ের মধ্যে অনুসন্ধানটি সম্পাদন করতে পারে। এটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে।
কোটলিন
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) } } } }
জাভা
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
অ্যাকশনটি ব্যবহার করুন এবং নিম্নলিখিত অতিরিক্ত ব্যবহার করে বিষয় এবং পাঠ্য হিসাবে নোটের বিশদ নির্দিষ্ট করুন।
দ্রষ্টব্য: অ্যাপ্লিকেশনগুলি অবশ্যই এই ক্রিয়াটি শেষ করার আগে ব্যবহারকারীর কাছ থেকে নিশ্চিতকরণের জন্য জিজ্ঞাসা করতে হবে।
উদাহরণ অভিপ্রায়:
কোটলিন
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) } }
জাভা
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); } }
উদাহরণ অভিপ্রায় ফিল্টার:
...> android:name="com.google.android.gms.actions.CREATE_NOTE" /> android:name="android.intent.category.DEFAULT" /> android:mimeType="*/*" />
ফোন
কল শুরু করা ফোন অ্যাপ্লিকেশনগুলির জন্য একটি সাধারণ ক্রিয়া। নিম্নলিখিত বিভাগে তথ্য ব্যবহার করে এই ক্রিয়াটি সম্পাদন করার জন্য আপনার অ্যাপ্লিকেশনটির দক্ষতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করুন।
একটি ফোন কল শুরু করুন
ফোন অ্যাপটি খুলতে এবং একটি ফোন নম্বর ডায়াল করতে, ACTION_DIAL
অ্যাকশনটি ব্যবহার করুন এবং নিম্নলিখিত ইউআরআই স্কিমটি ব্যবহার করে একটি ফোন নম্বর নির্দিষ্ট করুন। যখন ফোন অ্যাপটি খোলে, এটি ফোন নম্বরটি প্রদর্শন করে এবং ফোন কলটি শুরু করতে ব্যবহারকারীকে অবশ্যই কল বোতামটি ট্যাপ করতে হবে।
সরাসরি একটি ফোন কল রাখতে, ACTION_CALL
অ্যাকশনটি ব্যবহার করুন এবং নিম্নলিখিত ইউআরআই স্কিমটি ব্যবহার করে একটি ফোন নম্বর নির্দিষ্ট করুন। যখন ফোন অ্যাপটি খোলে, এটি ফোন কল শুরু করে। ব্যবহারকারীর কল বোতামটি ট্যাপ করার দরকার নেই।
ACTION_CALL
অ্যাকশনটির জন্য আপনার ম্যানিফেস্ট ফাইলে CALL_PHONE
অনুমতি যুক্ত করা দরকার:
android:name="android.permission.CALL_PHONE" />
বৈধ টেলিফোন নম্বরগুলি আইইটিএফ আরএফসি 3966 এ সংজ্ঞায়িত। বৈধ উদাহরণগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:
ফোন অ্যাপের ডায়ালারটি টেলিফোন নম্বরগুলির মতো স্কিমগুলি স্বাভাবিক করার ক্ষেত্রে ভাল। সুতরাং বর্ণিত স্কিমটি Uri.parse()
পদ্ধতিতে কঠোরভাবে প্রয়োজনীয় নয়। তবে, আপনি যদি কোনও স্কিম চেষ্টা না করে থাকেন বা এটি পরিচালনা করা যায় কিনা তা নিশ্চিত না হন তবে পরিবর্তে Uri.fromParts()
পদ্ধতিটি ব্যবহার করুন।
উদাহরণ অভিপ্রায়:
কোটলিন
fun dialPhoneNumber(phoneNumber: String) { val intent = Intent(Intent.ACTION_DIAL).apply { data = Uri.parse("tel:$phoneNumber") } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
জাভা
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
ক্রিয়াটি প্রয়োগ করুন। আরও তথ্যের জন্য, গুগল সহকারী অ্যাপ অ্যাকশন ডকুমেন্টেশন দেখুন।
উদাহরণ অভিপ্রায় ফিল্টার:
android:name=".SearchActivity"> android:name="com.google.android.gms.actions.SEARCH_ACTION"/> android:name="android.intent.category.DEFAULT"/>
একটি ওয়েব অনুসন্ধান সম্পাদন করুন
একটি ওয়েব অনুসন্ধান শুরু করতে, ACTION_WEB_SEARCH
অনুসন্ধান ক্রিয়াটি ব্যবহার করুন এবং SearchManager.QUERY
অতিরিক্ত অনুসন্ধানের স্ট্রিংটি নির্দিষ্ট করুন।
উদাহরণ অভিপ্রায়:
কোটলিন
fun searchWeb(query: String) { val intent = Intent(Intent.ACTION_WEB_SEARCH).apply { putExtra(SearchManager.QUERY, query) } if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
জাভা
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); } }
সেটিংস
সিস্টেম সেটিংস অ্যাপে একটি স্ক্রিন খোলার জন্য যখন আপনার অ্যাপ্লিকেশনটির জন্য ব্যবহারকারীকে কিছু পরিবর্তন করতে হবে, নিম্নলিখিত অভিপ্রায় ক্রিয়াগুলির মধ্যে একটি ব্যবহার করুন:
উদাহরণ অভিপ্রায়:
কোটলিন
fun openWifiSettings() { val intent = Intent(Settings.ACTION_WIFI_SETTINGS) if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
জাভা
public void openWifiSettings() { Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }
টেক্সট মেসেজিং
একটি সংযুক্তি সহ একটি এসএমএস/এমএমএস বার্তা রচনা করা পাঠ্য মেসেজিং অ্যাপ্লিকেশনগুলির জন্য একটি সাধারণ ক্রিয়া। নিম্নলিখিত বিভাগে তথ্য ব্যবহার করে এই ক্রিয়াটি সম্পাদন করার জন্য আপনার অ্যাপ্লিকেশনটির দক্ষতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করুন।
সংযুক্তি সহ একটি এসএমএস/এমএমএস বার্তা রচনা করুন
একটি এসএমএস বা এমএমএস পাঠ্য বার্তা শুরু করতে, নিম্নলিখিত অতিরিক্ত ক্রিয়াকলাপগুলির মধ্যে একটি ব্যবহার করুন এবং বার্তার বিশদ যেমন ফোন নম্বর, বিষয় এবং বার্তা বডি হিসাবে নিম্নলিখিত অতিরিক্ত কীগুলি ব্যবহার করে নির্দিষ্ট করুন।
উদাহরণ অভিপ্রায়:
কোটলিন
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) } }
জাভা
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:"
ডেটা স্কিমটি অন্তর্ভুক্ত করুন:
কোটলিন
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) } }
জাভা
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); } }
উদাহরণ অভিপ্রায় ফিল্টার:
...> android:name="android.intent.action.SEND" /> android:type="text/plain" /> android:type="image/*" /> android:name="android.intent.category.DEFAULT" />
দ্রষ্টব্য: আপনি যদি কোনও এসএমএস/এমএমএস মেসেজিং অ্যাপ্লিকেশন বিকাশ করছেন, অ্যান্ড্রয়েড 4.4 এবং উচ্চতর ডিফল্ট এসএমএস অ্যাপ্লিকেশন হিসাবে উপলব্ধ হওয়ার জন্য আপনাকে অবশ্যই বেশ কয়েকটি অতিরিক্ত ক্রিয়াকলাপের জন্য অভিপ্রায় ফিল্টারগুলি প্রয়োগ করতে হবে। আরও তথ্যের জন্য, Telephony
ডকুমেন্টেশন দেখুন।
ওয়েব ব্রাউজার
ওয়েব ইউআরএল লোড করা ওয়েব ব্রাউজার অ্যাপ্লিকেশনগুলির জন্য একটি সাধারণ ক্রিয়া। নিম্নলিখিত বিভাগে তথ্য ব্যবহার করে এই ক্রিয়াটি সম্পাদন করার জন্য আপনার অ্যাপ্লিকেশনটির দক্ষতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করুন।
একটি ওয়েব ইউআরএল লোড করুন
একটি ওয়েব পৃষ্ঠা খোলার জন্য, ACTION_VIEW
অ্যাকশনটি ব্যবহার করুন এবং অভিপ্রায় ডেটাতে ওয়েব ইউআরএল নির্দিষ্ট করুন।
উদাহরণ অভিপ্রায়:
কোটলিন
fun openWebPage(url: String) { val webpage: Uri = Uri.parse(url) val intent = Intent(Intent.ACTION_VIEW, webpage) if (intent.resolveActivity(packageManager) != null) { startActivity(intent) } }
জাভা
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); } }
উদাহরণ অভিপ্রায় ফিল্টার:
...> android:name="android.intent.action.VIEW" /> android:scheme="http" android:host="www.example.com" /> android:name="android.intent.category.DEFAULT" /> android:name="android.intent.category.BROWSABLE" />
টিপ: যদি আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটি আপনার ওয়েবসাইটের অনুরূপ কার্যকারিতা সরবরাহ করে তবে আপনার ওয়েবসাইটের দিকে নির্দেশ করে এমন ইউআরএলগুলির জন্য একটি অভিপ্রায় ফিল্টার অন্তর্ভুক্ত করুন। তারপরে, যদি ব্যবহারকারীরা আপনার অ্যাপ্লিকেশনটি ইনস্টল করে থাকে তবে ইমেল বা অন্যান্য ওয়েব পৃষ্ঠাগুলি থেকে লিঙ্কগুলি আপনার ওয়েব সাইটের দিকে নির্দেশ করে আপনার ওয়েব পৃষ্ঠার পরিবর্তে আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটি খুলুন। অ্যান্ড্রয়েড অ্যাপ্লিকেশন লিঙ্কগুলি পরিচালনা করতে আরও জানুন।
অ্যান্ড্রয়েড 12 (এপিআই স্তর 31) থেকে শুরু করে, একটি জেনেরিক ওয়েব ইন্টেন্ট কেবলমাত্র আপনার অ্যাপ্লিকেশনটিতে কোনও ক্রিয়াকলাপের সমাধান করে যদি আপনার অ্যাপ্লিকেশনটি সেই ওয়েব অভিপ্রায়টিতে থাকা নির্দিষ্ট ডোমেনের জন্য অনুমোদিত হয়। যদি আপনার অ্যাপ্লিকেশনটি ডোমেনের জন্য অনুমোদিত না হয় তবে ওয়েব অভিপ্রায়টি পরিবর্তে ব্যবহারকারীর ডিফল্ট ব্রাউজার অ্যাপ্লিকেশনটিতে সমাধান করে।
অ্যান্ড্রয়েড ডিবাগ ব্রিজের সাথে উদ্দেশ্যগুলি যাচাই করুন
আপনার অ্যাপ্লিকেশনটি আপনি সমর্থন করতে চান এমন উদ্দেশ্যগুলিতে প্রতিক্রিয়া জানায় তা যাচাই করতে, আপনি নিম্নলিখিতগুলি করে নির্দিষ্ট উদ্দেশ্যগুলি আগুনের জন্য adb
সরঞ্জামটি ব্যবহার করতে পারেন:
আরও তথ্যের জন্য, শেল কমান্ডগুলি ইস্যু দেখুন।
এই পৃষ্ঠার কন্টেন্ট ও কোডের নমুনাগুলি Content License-এ বর্ণিত লাইসেন্সের অধীনস্থ। Java এবং OpenJDK হল Oracle এবং/অথবা তার অ্যাফিলিয়েট সংস্থার রেজিস্টার্ড ট্রেডমার্ক।
2025-06-11 UTC-তে শেষবার আপডেট করা হয়েছে।