সাধারণ অভিপ্রায়

একটি ইনটেন্ট অবজেক্টে "একটি মানচিত্র দেখুন" বা "একটি ছবি তুলুন" এর মতো আপনার পছন্দের কোনও ক্রিয়া বর্ণনা করে একটি Intent অ্যাপে একটি কার্যকলাপ শুরু করতে আপনাকে সাহায্য করে। এই ধরণের ইনটেন্টকে একটি অন্তর্নিহিত ইনটেন্ট বলা হয় কারণ এটি শুরু করার জন্য অ্যাপ উপাদান নির্দিষ্ট করে না, বরং একটি ক্রিয়া নির্দিষ্ট করে এবং কিছু ডেটা সরবরাহ করে যার সাহায্যে ক্রিয়াটি সম্পাদন করা যায়।

যখন আপনি startActivity() অথবা startActivityForResult() কল করেন এবং এটিকে একটি অন্তর্নিহিত ইন্টেন্ট দেন, তখন সিস্টেমটি এমন একটি অ্যাপের কাছে ইন্টেন্টটি সমাধান করে যা ইন্টেন্টটি পরিচালনা করতে পারে এবং এর সাথে সম্পর্কিত Activity শুরু করে। যদি একাধিক অ্যাপ থাকে যা ইন্টেন্টটি পরিচালনা করতে পারে, তাহলে সিস্টেমটি ব্যবহারকারীকে কোন অ্যাপটি ব্যবহার করবেন তা বেছে নেওয়ার জন্য একটি ডায়ালগ উপস্থাপন করে।

এই পৃষ্ঠাটি বেশ কয়েকটি অন্তর্নিহিত অভিপ্রায় বর্ণনা করে যা আপনি সাধারণ ক্রিয়া সম্পাদন করতে ব্যবহার করতে পারেন, যা অ্যাপের ধরণের দ্বারা সংগঠিত যা অভিপ্রায় পরিচালনা করে। প্রতিটি বিভাগটি দেখায় যে কীভাবে আপনি আপনার অ্যাপের ক্রিয়া সম্পাদনের ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি অভিপ্রায় ফিল্টার তৈরি করতে পারেন।

সতর্কতা: যদি ডিভাইসে এমন কোনও অ্যাপ না থাকে যা অন্তর্নিহিত ইন্টেন্ট গ্রহণ করতে পারে, startActivity() কল করলে অ্যাপটি ক্র্যাশ হয়ে যায়। প্রথমে যাচাই করতে যে কোনও অ্যাপ ইনটেন্ট গ্রহণ করার জন্য বিদ্যমান, আপনার Intent অবজেক্টে resolveActivity() কল করুন। যদি ফলাফলটি অ-নাল হয়, তাহলে কমপক্ষে একটি অ্যাপ আছে যা ইনটেন্ট পরিচালনা করতে পারে এবং startActivity() কল করা নিরাপদ। যদি ফলাফলটি null হয়, তাহলে ইনটেন্ট ব্যবহার করবেন না এবং সম্ভব হলে, ইনটেন্ট আহ্বানকারী বৈশিষ্ট্যটি অক্ষম করুন।

যদি আপনি ইন্টেন্ট বা ইনটেন্ট ফিল্টার তৈরি করতে না জানেন, তাহলে প্রথমে ইন্টেন্ট এবং ইন্টেন্ট ফিল্টার পড়ুন।

আপনার ডেভেলপমেন্ট হোস্ট থেকে এই পৃষ্ঠায় তালিকাভুক্ত ইন্টেন্টগুলি কীভাবে কার্যকর করবেন তা জানতে, "অ্যান্ড্রয়েড ডিবাগ ব্রিজের সাথে ইন্টেন্টগুলি যাচাই করুন" বিভাগটি দেখুন।

গুগল ভয়েস অ্যাকশন

গুগল ভয়েস অ্যাকশনস ভয়েস কমান্ডের প্রতিক্রিয়ায় এই পৃষ্ঠায় তালিকাভুক্ত কিছু উদ্দেশ্য বাস্তবায়ন করে। আরও তথ্যের জন্য, সিস্টেম ভয়েস অ্যাকশন দিয়ে শুরু করুন দেখুন।

অ্যালার্ম ঘড়ি

অ্যালার্ম ক্লক অ্যাপের জন্য সাধারণ ক্রিয়াগুলি নিম্নরূপ, যার মধ্যে প্রতিটি ক্রিয়া সম্পাদনের জন্য আপনার অ্যাপের ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি ইনটেন্ট ফিল্টার তৈরি করার জন্য প্রয়োজনীয় তথ্য অন্তর্ভুক্ত রয়েছে।

একটি অ্যালার্ম তৈরি করুন

গুগল ভয়েস অ্যাকশন

  • "সকাল ৭টার জন্য একটি অ্যালার্ম সেট করো"

একটি নতুন অ্যালার্ম তৈরি করতে, ACTION_SET_ALARM অ্যাকশনটি ব্যবহার করুন এবং নিম্নলিখিত অতিরিক্তগুলি ব্যবহার করে সময় এবং বার্তার মতো অ্যালার্মের বিবরণ নির্দিষ্ট করুন।

দ্রষ্টব্য: অ্যান্ড্রয়েড ২.৩ (এপিআই লেভেল ৯) এবং তার নিচের ভার্সনে শুধুমাত্র ঘন্টা, মিনিট এবং বার্তার অতিরিক্ত সুবিধা পাওয়া যাবে। অন্যান্য অতিরিক্ত সুবিধা প্ল্যাটফর্মের উচ্চতর ভার্সনে পাওয়া যাবে।

অ্যাকশন
ACTION_SET_ALARM
ডেটা ইউআরআই
কোনটিই নয়
MIME প্রকার
কোনটিই নয়
অতিরিক্ত
EXTRA_HOUR
অ্যালার্মের সময়।
EXTRA_MINUTES
অ্যালার্মের মিনিট।
EXTRA_MESSAGE
অ্যালার্ম সনাক্ত করার জন্য একটি কাস্টম বার্তা।
EXTRA_DAYS
একটি ArrayList যাতে সপ্তাহের প্রতিটি দিন অন্তর্ভুক্ত থাকে যেদিন এই অ্যালার্মটি পুনরাবৃত্তি হয়। প্রতিটি দিন Calendar ক্লাস থেকে একটি পূর্ণসংখ্যা দিয়ে ঘোষণা করতে হবে, যেমন MONDAY

এককালীন অ্যালার্মের জন্য, এই অতিরিক্তটি নির্দিষ্ট করবেন না।

EXTRA_RINGTONE
একটি content: অ্যালার্মের সাথে ব্যবহার করার জন্য একটি রিংটোন নির্দিষ্ট করে এমন URI, অথবা কোনও রিংটোন না থাকলে 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 অনুমতি থাকতে হবে:

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

উদাহরণ ইনটেন্ট ফিল্টার:

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

একটি টাইমার তৈরি করুন

গুগল ভয়েস অ্যাকশন

  • "৫ মিনিটের জন্য টাইমার সেট করুন"

একটি কাউন্টডাউন টাইমার তৈরি করতে, ACTION_SET_TIMER অ্যাকশন ব্যবহার করুন এবং নিম্নলিখিত অতিরিক্তগুলি ব্যবহার করে সময়কালের মতো টাইমারের বিবরণ নির্দিষ্ট করুন।

দ্রষ্টব্য: এই ইন্টেন্টটি অ্যান্ড্রয়েড ৪.৪ (এপিআই লেভেল ১৯) এবং তার উচ্চতর সংস্করণে উপলব্ধ।

অ্যাকশন
ACTION_SET_TIMER
ডেটা ইউআরআই
কোনটিই নয়
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 অনুমতি থাকতে হবে:

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

উদাহরণ ইনটেন্ট ফিল্টার:

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

সমস্ত অ্যালার্ম দেখান

অ্যালার্মের তালিকা দেখানোর জন্য, ACTION_SHOW_ALARMS অ্যাকশনটি ব্যবহার করুন।

যদিও খুব বেশি অ্যাপ এই অভিপ্রায় ব্যবহার করে না, কারণ এটি মূলত সিস্টেম অ্যাপগুলিতে ব্যবহৃত হয়, তবে যে কোনও অ্যাপ যা অ্যালার্ম ঘড়ির মতো আচরণ করে তারা এই অভিপ্রায় ফিল্টারটি বাস্তবায়ন করতে পারে এবং বর্তমান অ্যালার্মগুলির তালিকা দেখিয়ে প্রতিক্রিয়া জানাতে পারে।

দ্রষ্টব্য: এই ইন্টেন্টটি অ্যান্ড্রয়েড ৪.৪ (এপিআই লেভেল ১৯) এবং তার উচ্চতর সংস্করণে উপলব্ধ।

অ্যাকশন
ACTION_SHOW_ALARMS
ডেটা ইউআরআই
কোনটিই নয়
MIME প্রকার
কোনটিই নয়

উদাহরণ ইনটেন্ট ফিল্টার:

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

ক্যালেন্ডার

ক্যালেন্ডার অ্যাপের জন্য ইভেন্ট যোগ করা একটি সাধারণ কাজ। নিম্নলিখিত বিভাগের তথ্য ব্যবহার করে আপনার অ্যাপের এই ক্রিয়াটি সম্পাদন করার ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি ইন্টেন্ট ফিল্টার তৈরি করুন।

একটি ক্যালেন্ডার ইভেন্ট যোগ করুন

ব্যবহারকারীর ক্যালেন্ডারে একটি নতুন ইভেন্ট যোগ করতে, ACTION_INSERT অ্যাকশন ব্যবহার করুন এবং Events.CONTENT_URI ব্যবহার করে ডেটা URI নির্দিষ্ট করুন। এরপর আপনি নিম্নলিখিত অতিরিক্তগুলি ব্যবহার করে বিভিন্ন ইভেন্টের বিবরণ নির্দিষ্ট করতে পারেন।

অ্যাকশন
ACTION_INSERT
ডেটা ইউআরআই
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);
    }
}

উদাহরণ ইনটেন্ট ফিল্টার:

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

ক্যামেরা

ক্যামেরা অ্যাপের জন্য সাধারণ অ্যাকশনগুলি নিচে দেওয়া হল, যার মধ্যে প্রতিটি অ্যাকশন সম্পাদনের জন্য আপনার অ্যাপের ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি ইনটেন্ট ফিল্টার তৈরি করার জন্য প্রয়োজনীয় তথ্য অন্তর্ভুক্ত রয়েছে।

একটি ছবি বা ভিডিও ক্যাপচার করুন এবং তা ফেরত দিন

একটি ক্যামেরা অ্যাপ খুলতে এবং ফলাফলের ছবি বা ভিডিও পেতে, ACTION_IMAGE_CAPTURE অথবা ACTION_VIDEO_CAPTURE অ্যাকশন ব্যবহার করুন। এছাড়াও EXTRA_OUTPUT অতিরিক্তে, ক্যামেরাটি যেখানে ছবি বা ভিডিও সংরক্ষণ করতে চায় তার URI অবস্থানটি নির্দিষ্ট করুন।

অ্যাকশন
ACTION_IMAGE_CAPTURE অথবা
ACTION_VIDEO_CAPTURE
ডেটা ইউআরআই স্কিম
কোনটিই নয়
MIME প্রকার
কোনটিই নয়
অতিরিক্ত
EXTRA_OUTPUT
URI অবস্থান যেখানে ক্যামেরা অ্যাপটি ছবি বা ভিডিও ফাইল সংরক্ষণ করে ( Uri অবজেক্ট হিসেবে)।

যখন ক্যামেরা অ্যাপটি সফলভাবে আপনার অ্যাক্টিভিটিতে ফোকাস ফিরিয়ে আনে—অন্য কথায়, আপনার অ্যাপটি onActivityResult() কলব্যাক পায়—আপনি EXTRA_OUTPUT মান ব্যবহার করে আপনার নির্দিষ্ট URI-তে ফটো বা ভিডিও অ্যাক্সেস করতে পারবেন।

দ্রষ্টব্য: যখন আপনি একটি ছবি তোলার জন্য ACTION_IMAGE_CAPTURE ব্যবহার করেন, তখন ক্যামেরাটি Intent ফলাফলে ছবির একটি ছোট কপি বা থাম্বনেইল ফেরত দিতে পারে, যা "data" নামে একটি অতিরিক্ত ক্ষেত্রে Bitmap হিসাবে সংরক্ষিত থাকে।

উদাহরণ অভিপ্রায়:

কোটলিন

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

অ্যান্ড্রয়েড ১২ (এপিআই লেভেল ৩১) বা তার বেশি ভার্সনে কাজ করার সময় এটি করার জন্য, নিম্নলিখিত ইনটেন্ট উদাহরণটি দেখুন।

উদাহরণ অভিপ্রায়:

কোটলিন

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 কীভাবে তৈরি করবেন সে সম্পর্কে আরও তথ্যের জন্য, "ছবি তুলুন" বা "ভিডিও তুলুন" পড়ুন।

উদাহরণ ইনটেন্ট ফিল্টার:

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

এই ইন্টেন্টটি পরিচালনা করার সময়, আপনার অ্যাক্টিভিটি ইনকামিং IntentEXTRA_OUTPUT অতিরিক্তের জন্য পরীক্ষা করুন, তারপর ক্যাপচার করা ছবি বা ভিডিওটি সেই অতিরিক্ত দ্বারা নির্দিষ্ট স্থানে সংরক্ষণ করুন এবং setResult() একটি Intent দিয়ে কল করুন যাতে "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);
    }
}

উদাহরণ ইনটেন্ট ফিল্টার:

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

ভিডিও মোডে একটি ক্যামেরা অ্যাপ শুরু করুন

গুগল ভয়েস অ্যাকশন

  • "একটি ভিডিও রেকর্ড করুন"

ভিডিও মোডে একটি ক্যামেরা অ্যাপ খুলতে, INTENT_ACTION_VIDEO_CAMERA অ্যাকশনটি ব্যবহার করুন।

অ্যাকশন
INTENT_ACTION_VIDEO_CAMERA
ডেটা ইউআরআই স্কিম
কোনটিই নয়
MIME প্রকার
কোনটিই নয়
অতিরিক্ত
কোনটিই নয়

উদাহরণ অভিপ্রায়:

কোটলিন

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);
    }
}

উদাহরণ ইনটেন্ট ফিল্টার:

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

পরিচিতি/মানুষ অ্যাপ

পরিচিতি ব্যবস্থাপনা অ্যাপের জন্য নিম্নলিখিত সাধারণ পদক্ষেপগুলি রয়েছে, যার মধ্যে প্রতিটি পদক্ষেপ সম্পাদনের জন্য আপনার অ্যাপের ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি ইন্টেন্ট ফিল্টার তৈরি করার জন্য প্রয়োজনীয় তথ্য অন্তর্ভুক্ত রয়েছে।

একটি পরিচিতি নির্বাচন করুন

ব্যবহারকারীকে একটি পরিচিতি নির্বাচন করতে এবং আপনার অ্যাপকে সমস্ত যোগাযোগের তথ্যে অ্যাক্সেস দিতে, ACTION_PICK অ্যাকশনটি ব্যবহার করুন এবং MIME টাইপটি Contacts.CONTENT_TYPE এ নির্দিষ্ট করুন।

আপনার onActivityResult() কলব্যাকে যে ফলাফল Intent ডেলিভার করা হয়েছে তাতে এই content: নির্বাচিত পরিচিতির দিকে নির্দেশকারী URI। প্রতিক্রিয়াটি আপনার অ্যাপটিকে Contacts Provider 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 পাওয়ার পর কীভাবে যোগাযোগের বিবরণ পুনরুদ্ধার করবেন সে সম্পর্কে তথ্যের জন্য, "একটি যোগাযোগের বিবরণ পুনরুদ্ধার করুন" পড়ুন।

এই ইন্টেন্ট ব্যবহার করে যখন আপনি যোগাযোগের URI পুনরুদ্ধার করেন, তখন সাধারণত সেই পরিচিতির মৌলিক বিবরণ, যেমন প্রদর্শনের নাম এবং পরিচিতিটি তারকাচিহ্নিত কিনা তা পড়ার জন্য আপনার READ_CONTACTS অনুমতির প্রয়োজন হয় না। তবে, যদি আপনি কোনও পরিচিতি সম্পর্কে আরও নির্দিষ্ট তথ্য পড়ার চেষ্টা করেন—যেমন তাদের ফোন নম্বর বা ইমেল ঠিকানা—আপনার READ_CONTACTS অনুমতির প্রয়োজন হয়।

নির্দিষ্ট যোগাযোগের ডেটা নির্বাচন করুন

ব্যবহারকারীকে কোনও পরিচিতি থেকে নির্দিষ্ট তথ্য নির্বাচন করতে, যেমন ফোন নম্বর, ইমেল ঠিকানা, বা অন্যান্য ডেটা টাইপ, ACTION_PICK অ্যাকশন ব্যবহার করুন এবং MIME টাইপটি নিম্নলিখিত কন্টেন্ট টাইপগুলির মধ্যে একটিতে নির্দিষ্ট করুন, যেমন CommonDataKinds.Phone.CONTENT_TYPE যোগাযোগের ফোন নম্বর পেতে।

দ্রষ্টব্য: অনেক ক্ষেত্রে, আপনার অ্যাপের একটি নির্দিষ্ট পরিচিতি সম্পর্কে নির্দিষ্ট তথ্য দেখার জন্য READ_CONTACTS অনুমতি থাকা প্রয়োজন।

যদি আপনার কোন পরিচিতি থেকে শুধুমাত্র এক ধরণের ডেটা পুনরুদ্ধার করার প্রয়োজন হয়, তাহলে ContactsContract.CommonDataKinds ক্লাস থেকে CONTENT_TYPE ব্যবহার করার এই কৌশলটি Contacts.CONTENT_TYPE ব্যবহারের তুলনায় বেশি কার্যকর, যেমনটি পূর্ববর্তী বিভাগে দেখানো হয়েছে। ফলাফলটি আপনাকে Contacts Provider- এ আরও জটিল কোয়েরি না করেই কাঙ্ক্ষিত ডেটাতে সরাসরি অ্যাক্সেস প্রদান করে।

আপনার 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<String> = arrayOf(CommonDataKinds.Phone.NUMBER)
        contentResolver.query(contactUri, projection, null, null, null).use { cursor ->
            // If the cursor returned is valid, get the phone number.
            if (cursor.moveToFirst()) {
                val numberIndex = cursor.getColumnIndex(CommonDataKinds.Phone.NUMBER)
                val number = cursor.getString(numberIndex)
                // Do something with the phone number.
                ...
            }
        }
    }
}

জাভা

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:<URI>
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:<URI>
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 অ্যাকশন ব্যবহার করা হয়, তাহলে এটি একটি ArrayList যেখানে একাধিক Uri অবজেক্ট রয়েছে।

উদাহরণ অভিপ্রায়:

কোটলিন

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

জাভা

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<String>, subject: String) {
    val intent = Intent(Intent.ACTION_SENDTO).apply {
        data = Uri.parse("mailto:") // Only email apps handle this.
        putExtra(Intent.EXTRA_EMAIL, addresses)
        putExtra(Intent.EXTRA_SUBJECT, subject)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

জাভা

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

উদাহরণ ইনটেন্ট ফিল্টার:

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

ফাইল স্টোরেজ

ফাইল স্টোরেজ অ্যাপের জন্য সাধারণ ক্রিয়াগুলি নিম্নরূপ, যার মধ্যে প্রতিটি ক্রিয়া সম্পাদন করার জন্য আপনার অ্যাপের ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি ইন্টেন্ট ফিল্টার তৈরি করার জন্য প্রয়োজনীয় তথ্য অন্তর্ভুক্ত রয়েছে।

একটি নির্দিষ্ট ধরণের ফাইল পুনরুদ্ধার করুন

ব্যবহারকারীকে একটি ডকুমেন্ট বা ছবির মতো একটি ফাইল নির্বাচন করতে এবং আপনার অ্যাপে একটি রেফারেন্স ফেরত দেওয়ার অনুরোধ করতে, ACTION_GET_CONTENT অ্যাকশন ব্যবহার করুন এবং আপনার পছন্দসই MIME টাইপ নির্দিষ্ট করুন। আপনার অ্যাপে ফেরত পাঠানো ফাইল রেফারেন্সটি আপনার কার্যকলাপের বর্তমান জীবনচক্রের জন্য ক্ষণস্থায়ী, তাই আপনি যদি পরে এটি অ্যাক্সেস করতে চান তবে আপনাকে একটি কপি আমদানি করতে হবে যা আপনি পরে পড়তে পারবেন।

এই অভিপ্রায় ব্যবহারকারীকে প্রক্রিয়াটিতে একটি নতুন ফাইল তৈরি করতে দেয়। উদাহরণস্বরূপ, একটি বিদ্যমান ছবি নির্বাচন করার পরিবর্তে, ব্যবহারকারী ক্যামেরা দিয়ে একটি নতুন ছবি তুলতে পারেন।

আপনার onActivityResult() পদ্ধতিতে যে ফলাফলের ইন্টেন্ট সরবরাহ করা হয় তাতে এমন ডেটা থাকে যেখানে URI ফাইলের দিকে নির্দেশ করে। URI যেকোনো কিছু হতে পারে, যেমন http: URI, file: URI, অথবা content: URI। তবে, যদি আপনি নির্বাচনযোগ্য ফাইলগুলিকে শুধুমাত্র সেই ফাইলগুলিতে সীমাবদ্ধ রাখতে চান যেগুলি একটি কন্টেন্ট প্রদানকারী (একটি content: URI) থেকে অ্যাক্সেসযোগ্য এবং openFileDescriptor() দিয়ে একটি ফাইল স্ট্রিম হিসাবে উপলব্ধ, তাহলে আপনার ইন্টেন্টে CATEGORY_OPENABLE বিভাগটি যোগ করুন।

অ্যান্ড্রয়েড ৪.৩ (এপিআই লেভেল ১৮) এবং তার উচ্চতর সংস্করণে, আপনি ব্যবহারকারীকে একাধিক ফাইল নির্বাচন করতে দিতে পারেন, EXTRA_ALLOW_MULTIPLE intent এ যোগ করে, 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.
        ...
    }
}

ছবি ফেরত দেওয়ার জন্য ইন্টেন্ট ফিল্টারের উদাহরণ:

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

একটি নির্দিষ্ট ধরণের ফাইল খুলুন

আপনার অ্যাপে আমদানি করা ফাইলের একটি কপি পুনরুদ্ধার করার পরিবর্তে, ACTION_GET_CONTENT অ্যাকশন ব্যবহার করে, 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 থেকে কলাম ব্যবহার করে এর বিশদ অনুসন্ধান করতে পারেন।

রিটার্ন করা URI আপনার অ্যাপটিকে ফাইলটিতে দীর্ঘমেয়াদী পঠন অ্যাক্সেস দেয়, সম্ভবত লেখার অ্যাক্সেস সহ। ACTION_OPEN_DOCUMENT অ্যাকশনটি বিশেষভাবে কার্যকর যখন আপনি আপনার অ্যাপে একটি অনুলিপি তৈরি না করে একটি বিদ্যমান ফাইল পড়তে চান অথবা যখন আপনি একটি ফাইল খুলতে এবং সম্পাদনা করতে চান।

আপনি ব্যবহারকারীকে একাধিক ফাইল নির্বাচন করতে দিতে পারেন, যার জন্য intent EXTRA_ALLOW_MULTIPLE করা হয়েছে, true তে সেট করা হয়েছে। যদি ব্যবহারকারী শুধুমাত্র একটি আইটেম নির্বাচন করে, তাহলে আপনি getData() থেকে আইটেমটি পুনরুদ্ধার করতে পারবেন। যদি ব্যবহারকারী একাধিক আইটেম নির্বাচন করে, তাহলে getData() null প্রদান করে এবং আপনাকে অবশ্যই প্রতিটি আইটেম একটি 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" ) এর জন্য একটি ইন্টেন্ট ফিল্টার অন্তর্ভুক্ত করতে হবে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

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

আপনার অ্যাপ দ্বারা পরিচালিত ফাইলগুলিকে অন্যান্য অ্যাপ থেকে কীভাবে খোলা যায় সে সম্পর্কে আরও তথ্যের জন্য, "স্টোরেজ অ্যাক্সেস ফ্রেমওয়ার্ক ব্যবহার করে ফাইলগুলি খুলুন" পড়ুন।

স্থানীয় কর্মকাণ্ড

গাড়িতে কল করা একটি সাধারণ স্থানীয় পদক্ষেপ। নিম্নলিখিত বিভাগের তথ্য ব্যবহার করে আপনার অ্যাপের এই পদক্ষেপটি সম্পাদন করার ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি ইন্টেন্ট ফিল্টার তৈরি করুন।

গাড়ি ডাকো।

গুগল ভয়েস অ্যাকশন

  • "আমাকে একটা ট্যাক্সি দাও"
  • "আমাকে গাড়ি ডাকো"

(শুধুমাত্র Wear OS)

ট্যাক্সি কল করতে, ACTION_RESERVE_TAXI_RESERVATION অ্যাকশনটি ব্যবহার করুন।

দ্রষ্টব্য: এই কাজটি সম্পন্ন করার আগে অ্যাপগুলিকে ব্যবহারকারীর কাছ থেকে নিশ্চিতকরণ চাইতে হবে।

অ্যাকশন
ACTION_RESERVE_TAXI_RESERVATION
ডেটা ইউআরআই
কোনটিই নয়
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);
    }
}

উদাহরণ ইনটেন্ট ফিল্টার:

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

মানচিত্র

ম্যাপে অবস্থান দেখানো ম্যাপ অ্যাপের জন্য একটি সাধারণ কাজ। নিম্নলিখিত বিভাগে তথ্য ব্যবহার করে আপনার অ্যাপের এই ক্রিয়াটি সম্পাদন করার ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি ইনটেন্ট ফিল্টার তৈরি করুন।

মানচিত্রে একটি অবস্থান দেখান

একটি মানচিত্র খুলতে, ACTION_VIEW অ্যাকশন ব্যবহার করুন এবং নিম্নলিখিত স্কিমের যেকোনো একটি ব্যবহার করে ইনটেন্ট ডেটাতে অবস্থানের তথ্য নির্দিষ্ট করুন।

অ্যাকশন
ACTION_VIEW
ডেটা ইউআরআই স্কিম
geo: latitude , longitude
প্রদত্ত দ্রাঘিমাংশ এবং অক্ষাংশে মানচিত্রটি দেখান।

উদাহরণ: "geo:47.6,-122.3"

geo: latitude , longitude ?z= zoom
একটি নির্দিষ্ট জুম স্তরে প্রদত্ত দ্রাঘিমাংশ এবং অক্ষাংশে মানচিত্রটি দেখান। ১ এর জুম স্তর প্রদত্ত অক্ষাংশ , lng- কে কেন্দ্র করে সমগ্র পৃথিবীকে দেখায়। সর্বোচ্চ (নিকটতম) জুম স্তর হল ২৩।

উদাহরণ: "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 URI-তে পাস করা সমস্ত স্ট্রিং অবশ্যই এনকোড করা উচিত। উদাহরণস্বরূপ, 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);
    }
}

উদাহরণ ইনটেন্ট ফিল্টার:

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

সঙ্গীত বা ভিডিও

সঙ্গীত এবং ভিডিও অ্যাপের জন্য সাধারণ ক্রিয়াগুলি নিম্নরূপ, যার মধ্যে আপনার অ্যাপের প্রতিটি ক্রিয়া সম্পাদনের ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি ইন্টেন্ট ফিল্টার তৈরি করার জন্য প্রয়োজনীয় তথ্য অন্তর্ভুক্ত রয়েছে।

একটি মিডিয়া ফাইল চালান

একটি সঙ্গীত ফাইল চালানোর জন্য, ACTION_VIEW অ্যাকশন ব্যবহার করুন এবং ইনটেন্ট ডেটাতে ফাইলটির URI অবস্থান নির্দিষ্ট করুন।

অ্যাকশন
ACTION_VIEW
ডেটা ইউআরআই স্কিম
file: <URI>
content: <URI>
http: <URL>
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);
    }
}

উদাহরণ ইনটেন্ট ফিল্টার:

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

সার্চ কোয়েরির উপর ভিত্তি করে সঙ্গীত চালান

গুগল ভয়েস অ্যাকশন

  • "মাইকেল জ্যাকসন বিলি জিনের ভূমিকায় অভিনয় করো"

অনুসন্ধান প্রশ্নের উপর ভিত্তি করে সঙ্গীত চালাতে, INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH ইন্টেন্ট ব্যবহার করুন। ব্যবহারকারীর ভয়েস কমান্ডের প্রতিক্রিয়ায় একটি অ্যাপ সঙ্গীত চালানোর জন্য এই ইন্টেন্টটি চালু করতে পারে। এই ইন্টেন্টের জন্য গ্রহণকারী অ্যাপটি প্রদত্ত প্রশ্নের সাথে বিদ্যমান সামগ্রী মেলানোর জন্য তার ইনভেন্টরির মধ্যে একটি অনুসন্ধান করে এবং সেই সামগ্রীটি চালানো শুরু করে।

এই ইন্টেন্টে, EXTRA_MEDIA_FOCUS স্ট্রিং অতিরিক্ত অন্তর্ভুক্ত করুন, যা উদ্দেশ্যপ্রণোদিত অনুসন্ধান মোড নির্দিষ্ট করে। উদাহরণস্বরূপ, অনুসন্ধান মোড নির্দিষ্ট করতে পারে যে অনুসন্ধানটি কোনও শিল্পীর নাম নাকি গানের নাম।

অ্যাকশন
INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH
ডেটা ইউআরআই স্কিম
কোনটিই নয়
MIME প্রকার
কোনটিই নয়
অতিরিক্ত
MediaStore.EXTRA_MEDIA_FOCUS (প্রয়োজনীয়)

অনুসন্ধান মোড নির্দেশ করে: ব্যবহারকারী কোন নির্দিষ্ট শিল্পী, অ্যালবাম, গান, অথবা প্লেলিস্ট খুঁজছেন কিনা। বেশিরভাগ অনুসন্ধান মোডে অতিরিক্ত অতিরিক্ত সুবিধা থাকে। উদাহরণস্বরূপ, যদি ব্যবহারকারী কোন নির্দিষ্ট গান শুনতে আগ্রহী হন, তাহলে ইনটেন্টে তিনটি অতিরিক্ত সুবিধা থাকতে পারে: গানের শিরোনাম, শিল্পী এবং অ্যালবাম। এই ইনটেন্ট EXTRA_MEDIA_FOCUS এর প্রতিটি মানের জন্য নিম্নলিখিত অনুসন্ধান মোডগুলিকে সমর্থন করে:

যেকোনো - "vnd.android.cursor.item/*"

যেকোনো সঙ্গীত চালান। রিসিভিং অ্যাপটি স্মার্ট পছন্দের উপর ভিত্তি করে কিছু সঙ্গীত চালায়, যেমন ব্যবহারকারী শেষ কোন প্লেলিস্টটি শুনেছিলেন।

অতিরিক্ত সুবিধা:

  • QUERY (প্রয়োজনীয়): একটি খালি স্ট্রিং। এই অতিরিক্তটি সর্বদা ব্যাকওয়ার্ড সামঞ্জস্যের জন্য প্রদান করা হয়। বিদ্যমান অ্যাপগুলি যারা অনুসন্ধান মোড সম্পর্কে জানে না তারা এই উদ্দেশ্যটিকে একটি অসংগঠিত অনুসন্ধান হিসাবে প্রক্রিয়া করতে পারে।

অসংগঠিত - "vnd.android.cursor.item/*"

একটি অসংগঠিত অনুসন্ধান কোয়েরি থেকে একটি নির্দিষ্ট গান, অ্যালবাম, বা ধরণ চালান। ব্যবহারকারী যে ধরণের সামগ্রী শুনতে চান তা সনাক্ত করতে না পারলে অ্যাপগুলি এই অনুসন্ধান মোডের মাধ্যমে একটি উদ্দেশ্য তৈরি করতে পারে। সম্ভব হলে আরও নির্দিষ্ট অনুসন্ধান মোড ব্যবহার করুন।

অতিরিক্ত সুবিধা:

  • QUERY (প্রয়োজনীয়): এমন একটি স্ট্রিং যাতে শিল্পী, অ্যালবাম, গানের নাম, অথবা ধারার যেকোনো সমন্বয় থাকে।

ধরণ - 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 (প্রয়োজনীয়): একটি স্ট্রিং যাতে অ্যালবাম, শিল্পী, ধরণ, প্লেলিস্ট, অথবা শিরোনামের যেকোনো সমন্বয় থাকে। এই অতিরিক্তটি সর্বদা ব্যাকওয়ার্ড সামঞ্জস্যের জন্য প্রদান করা হয়। বিদ্যমান অ্যাপগুলি যারা অনুসন্ধান মোড সম্পর্কে জানে না তারা এই উদ্দেশ্যটিকে একটি অসংগঠিত অনুসন্ধান হিসাবে প্রক্রিয়া করতে পারে।

উদাহরণ অভিপ্রায়:

ব্যবহারকারী যদি কোনও নির্দিষ্ট শিল্পীর গান শুনতে চান, তাহলে একটি অনুসন্ধান অ্যাপ নিম্নলিখিত উদ্দেশ্য তৈরি করতে পারে:

কোটলিন

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);
    }
}

উদাহরণ ইনটেন্ট ফিল্টার:

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

আপনার অ্যাক্টিভিটিতে এই ইন্টেন্টটি পরিচালনা করার সময়, অনুসন্ধান মোড নির্ধারণ করতে ইনকামিং Intent EXTRA_MEDIA_FOCUS অতিরিক্তের মান পরীক্ষা করুন। আপনার অ্যাক্টিভিটি অনুসন্ধান মোড সনাক্ত করার পরে, সেই নির্দিষ্ট অনুসন্ধান মোডের জন্য অতিরিক্ত অতিরিক্তের মানগুলি পড়ুন। এই তথ্যের সাহায্যে, আপনার অ্যাপটি অনুসন্ধান কোয়েরির সাথে মেলে এমন সামগ্রী চালানোর জন্য তার ইনভেন্টরির মধ্যে অনুসন্ধান করতে পারে। এটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে।

কোটলিন

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
নোটের টেক্সট নির্দেশ করে এমন একটি স্ট্রিং।

উদাহরণ অভিপ্রায়:

কোটলিন

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);
    }
}

উদাহরণ ইনটেন্ট ফিল্টার:

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

ফোন

ফোন অ্যাপের ক্ষেত্রে কল শুরু করা একটি সাধারণ কাজ। নিম্নলিখিত বিভাগের তথ্য ব্যবহার করে আপনার অ্যাপের এই কাজটি সম্পাদন করার ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি ইন্টেন্ট ফিল্টার তৈরি করুন।

একটি ফোন কল শুরু করুন

ফোন অ্যাপটি খুলতে এবং একটি ফোন নম্বর ডায়াল করতে, ACTION_DIAL অ্যাকশনটি ব্যবহার করুন এবং নিম্নলিখিত URI স্কিম ব্যবহার করে একটি ফোন নম্বর নির্দিষ্ট করুন। ফোন অ্যাপটি খুললে, এটি ফোন নম্বরটি প্রদর্শন করে এবং ব্যবহারকারীকে ফোন কল শুরু করতে কল বোতামটি ট্যাপ করতে হবে।

গুগল ভয়েস অ্যাকশন

  • "৫৫৫-৫৫৫৫ নম্বরে কল করুন"
  • "কল বব"
  • "ভয়েসমেইলে কল করুন"

সরাসরি ফোন কল করার জন্য, ACTION_CALL অ্যাকশনটি ব্যবহার করুন এবং নিম্নলিখিত URI স্কিম ব্যবহার করে একটি ফোন নম্বর নির্দিষ্ট করুন। ফোন অ্যাপটি খুললে, এটি ফোন কল শুরু করে। ব্যবহারকারীকে কল বোতামটি ট্যাপ করার প্রয়োজন নেই।

ACTION_CALL অ্যাকশনের জন্য আপনার ম্যানিফেস্ট ফাইলে CALL_PHONE অনুমতি যোগ করতে হবে:

<uses-permission android:name="android.permission.CALL_PHONE" />
অ্যাকশন
  • ACTION_DIAL - ডায়ালার বা ফোন অ্যাপ খোলে।
  • ACTION_CALL - একটি ফোন কল করে ( CALL_PHONE অনুমতি প্রয়োজন)
ডেটা ইউআরআই স্কিম
  • tel:<phone-number>
  • voicemail:<phone-number>
MIME প্রকার
কোনটিই নয়

বৈধ টেলিফোন নম্বরগুলি হল IETF RFC 3966 তে সংজ্ঞায়িত। বৈধ উদাহরণগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

  • tel:2125551212
  • tel:(212) 555 1212

ফোন অ্যাপের ডায়ালার টেলিফোন নম্বরের মতো স্কিমগুলিকে স্বাভাবিক করার ক্ষেত্রে ভালো। তাই বর্ণিত স্কিমটি Uri.parse() পদ্ধতিতে কঠোরভাবে বাধ্যতামূলক নয়। তবে, যদি আপনি কোনও স্কিম চেষ্টা না করে থাকেন বা এটি পরিচালনা করা সম্ভব কিনা তা নিশ্চিত না হন, তাহলে Uri.fromParts() পদ্ধতিটি ব্যবহার করুন।

উদাহরণ অভিপ্রায়:

কোটলিন

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);
    }
}

সার্চ অ্যাপের জন্য সাধারণ অ্যাকশনগুলি নিচে দেওয়া হল, যার মধ্যে প্রতিটি অ্যাকশন সম্পাদনের জন্য আপনার অ্যাপের ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি ইনটেন্ট ফিল্টার তৈরি করার জন্য প্রয়োজনীয় তথ্য অন্তর্ভুক্ত রয়েছে।

একটি নির্দিষ্ট অ্যাপ ব্যবহার করে অনুসন্ধান করুন

গুগল ভয়েস অ্যাকশন

  • "myvideoapp-এ বিড়ালের ভিডিও খুঁজুন"

আপনার অ্যাপের প্রেক্ষাপটে অনুসন্ধান সমর্থন করার জন্য, নিম্নলিখিত ইনটেন্ট ফিল্টার উদাহরণে দেখানো SEARCH_ACTION অ্যাকশনের মাধ্যমে আপনার অ্যাপে একটি ইনটেন্ট ফিল্টার ঘোষণা করুন।

দ্রষ্টব্য: আমরা অ্যাপ অনুসন্ধানের জন্য SEARCH_ACTION ব্যবহার করার পরামর্শ দিচ্ছি না। পরিবর্তে, অ্যাপ-মধ্যস্থ অনুসন্ধানের জন্য Google Assistant-এর অন্তর্নির্মিত সহায়তা ব্যবহার করতে GET_THING অ্যাকশনটি বাস্তবায়ন করুন। আরও তথ্যের জন্য, Google Assistant অ্যাপ অ্যাকশন ডকুমেন্টেশন দেখুন।

অ্যাকশন
"com.google.android.gms.actions.SEARCH_ACTION"
গুগল ভয়েস অ্যাকশন থেকে অনুসন্ধান কোয়েরি সমর্থন করুন।
অতিরিক্ত
QUERY
একটি স্ট্রিং যাতে অনুসন্ধান কোয়েরি থাকে।

উদাহরণ ইনটেন্ট ফিল্টার:

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

একটি ওয়েব অনুসন্ধান করুন

ওয়েব অনুসন্ধান শুরু করতে, ACTION_WEB_SEARCH অ্যাকশনটি ব্যবহার করুন এবং SearchManager.QUERY অতিরিক্তে অনুসন্ধান স্ট্রিংটি নির্দিষ্ট করুন।

অ্যাকশন
ACTION_WEB_SEARCH
ডেটা ইউআরআই স্কিম
কোনটিই নয়
MIME প্রকার
কোনটিই নয়
অতিরিক্ত
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);
    }
}

সেটিংস

যখন আপনার অ্যাপ ব্যবহারকারীকে কিছু পরিবর্তন করতে বলে, তখন সিস্টেম সেটিংস অ্যাপে একটি স্ক্রিন খুলতে, নিম্নলিখিত ইনটেন্ট অ্যাকশনগুলির মধ্যে একটি ব্যবহার করুন:

অ্যাকশন
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 প্রকার
কোনটিই নয়

উদাহরণ অভিপ্রায়:

কোটলিন

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 বার্তা রচনা করুন

একটি SMS বা MMS টেক্সট মেসেজ শুরু করতে, নিম্নলিখিত ইনটেন্ট অ্যাকশনগুলির মধ্যে একটি ব্যবহার করুন এবং নিম্নলিখিত অতিরিক্ত কীগুলি ব্যবহার করে ফোন নম্বর, বিষয় এবং মেসেজের মূল অংশের মতো মেসেজের বিবরণ নির্দিষ্ট করুন।

অ্যাকশন
ACTION_SENDTO অথবা
ACTION_SEND অথবা
ACTION_SEND_MULTIPLE
ডেটা ইউআরআই স্কিম
sms: <phone_number>
smsto: <phone_number>
mms: <phone_number>
mmsto: <phone_number>

এই সমস্ত স্কিম একইভাবে পরিচালিত হয়।

MIME প্রকার
"text/plain"
"image/*"
"video/*"
অতিরিক্ত
"subject"
বার্তার বিষয়ের জন্য একটি স্ট্রিং (সাধারণত শুধুমাত্র MMS এর জন্য)।
"sms_body"
টেক্সট মেসেজের জন্য একটি স্ট্রিং।
EXTRA_STREAM
সংযুক্ত করার জন্য ছবি বা ভিডিওর দিকে নির্দেশ করে এমন একটি Uri । যদি ACTION_SEND_MULTIPLE অ্যাকশন ব্যবহার করা হয়, তাহলে এই অতিরিক্তটি Uri অবজেক্টের একটি ArrayList যা সংযুক্ত করার জন্য ছবি বা ভিডিওর দিকে নির্দেশ করে।

উদাহরণ অভিপ্রায়:

কোটলিন

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);
    }
}

উদাহরণ ইনটেন্ট ফিল্টার:

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

দ্রষ্টব্য: যদি আপনি একটি SMS/MMS মেসেজিং অ্যাপ তৈরি করেন, তাহলে Android 4.4 এবং উচ্চতর সংস্করণে ডিফল্ট SMS অ্যাপ হিসেবে উপলব্ধ হওয়ার জন্য আপনাকে বেশ কয়েকটি অতিরিক্ত অ্যাকশনের জন্য ইন্টেন্ট ফিল্টার প্রয়োগ করতে হবে। আরও তথ্যের জন্য, Telephony তে ডকুমেন্টেশন দেখুন।

ওয়েব ব্রাউজার

ওয়েব ব্রাউজার অ্যাপের জন্য একটি ওয়েব URL লোড করা একটি সাধারণ কাজ। নিম্নলিখিত বিভাগে তথ্য ব্যবহার করে আপনার অ্যাপের এই কাজটি সম্পাদন করার ক্ষমতার বিজ্ঞাপন দেওয়ার জন্য একটি ইন্টেন্ট ফিল্টার তৈরি করুন।

একটি ওয়েব URL লোড করুন

গুগল ভয়েস অ্যাকশন

  • "example.com খুলুন"

একটি ওয়েব পৃষ্ঠা খুলতে, ACTION_VIEW অ্যাকশন ব্যবহার করুন এবং ইনটেন্ট ডেটাতে ওয়েব URL নির্দিষ্ট করুন।

অ্যাকশন
ACTION_VIEW
ডেটা ইউআরআই স্কিম
http: <URL>
https: <URL>
MIME প্রকার
"text/plain"
"text/html"
"application/xhtml+xml"
"application/vnd.wap.xhtml+xml"

উদাহরণ অভিপ্রায়:

কোটলিন

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);
    }
}

উদাহরণ ইনটেন্ট ফিল্টার:

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

টিপ: যদি আপনার অ্যান্ড্রয়েড অ্যাপটি আপনার ওয়েবসাইটের মতো কার্যকারিতা প্রদান করে, তাহলে আপনার ওয়েবসাইটের দিকে নির্দেশিত URL গুলির জন্য একটি ইন্টেন্ট ফিল্টার অন্তর্ভুক্ত করুন। তারপর, যদি ব্যবহারকারীরা আপনার অ্যাপটি ইনস্টল করে থাকেন, তাহলে ইমেল বা অন্যান্য ওয়েব পৃষ্ঠা থেকে আপনার ওয়েবসাইটের দিকে নির্দেশিত লিঙ্কগুলি আপনার ওয়েব পৃষ্ঠার পরিবর্তে আপনার অ্যান্ড্রয়েড অ্যাপটি খুলবে। অ্যান্ড্রয়েড অ্যাপ লিঙ্ক পরিচালনা করা সম্পর্কে আরও জানুন।

অ্যান্ড্রয়েড ১২ (এপিআই লেভেল ৩১) থেকে শুরু করে, একটি জেনেরিক ওয়েব ইন্টেন্ট আপনার অ্যাপের কোনও অ্যাক্টিভিটিতে তখনই সমাধান করা হয় যখন আপনার অ্যাপটি সেই ওয়েব ইন্টেন্টে থাকা নির্দিষ্ট ডোমেনের জন্য অনুমোদিত হয়। যদি আপনার অ্যাপটি ডোমেনের জন্য অনুমোদিত না হয়, তাহলে ওয়েব ইন্টেন্টটি ব্যবহারকারীর ডিফল্ট ব্রাউজার অ্যাপে সমাধান করা হয়।

অ্যান্ড্রয়েড ডিবাগ ব্রিজ ব্যবহার করে উদ্দেশ্য যাচাই করুন

To verify that your app responds to the intents that you want to support, you can use the adb tool to fire specific intents by doing the following:

  1. Set up an Android device for development or use a virtual device .
  2. Install a version of your app that handles the intents you want to support.
  3. Fire an intent using adb :
    adb shell am start -a <ACTION> -t <MIME_TYPE> -d <DATA> \
      -e <EXTRA_NAME> <EXTRA_VALUE> -n <ACTIVITY>
    

    উদাহরণস্বরূপ:

    adb shell am start -a android.intent.action.DIAL \
      -d tel:555-5555 -n org.example.MyApp/.MyActivity
    
  4. If you define the required intent filters, handle the intent.

For more information, see Issue shell commands .