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

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

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

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

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

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

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

Google ভয়েস অ্যাকশন

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

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

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

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

Google ভয়েস অ্যাকশন

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

একটি নতুন অ্যালার্ম তৈরি করতে, 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 অনুমতি থাকতে হবে:

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

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

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

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

Google ভয়েস অ্যাকশন

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

একটি কাউন্টডাউন টাইমার তৈরি করতে, 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 অনুমতি থাকতে হবে:

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

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

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

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

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

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

দ্রষ্টব্য: এই উদ্দেশ্যটি Android 4.4 (API স্তর 19) এবং উচ্চতর সংস্করণে উপলব্ধ।

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

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

<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 ব্যবহার করেন, তখন ক্যামেরাটি "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 কীভাবে তৈরি করা যায় তা সহ একটি ফটো ক্যাপচার করতে এই উদ্দেশ্যটি কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও তথ্যের জন্য, ফটো তুলুন বা ভিডিও তুলুন পড়ুন।

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

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

এই অভিপ্রায়টি পরিচালনা করার সময়, ইনকামিং Intent EXTRA_OUTPUT অতিরিক্তের জন্য আপনার কার্যকলাপ পরীক্ষা করুন, তারপর সেই অতিরিক্ত দ্বারা নির্দিষ্ট স্থানে ক্যাপচার করা চিত্র বা ভিডিওটি সংরক্ষণ করুন এবং একটি Intent সহ setResult() কল করুন যাতে একটি অতিরিক্ত নামে একটি সংকুচিত থাম্বনেইল অন্তর্ভুক্ত থাকে "data"

স্থির চিত্র মোডে একটি ক্যামেরা অ্যাপ শুরু করুন

Google ভয়েস অ্যাকশন

  • "একটি ছবি তুলুন"

স্থির চিত্র মোডে একটি ক্যামেরা অ্যাপ খুলতে, 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>

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

Google ভয়েস অ্যাকশন

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

ভিডিও মোডে একটি ক্যামেরা অ্যাপ খুলতে, 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 অ্যাকশনটি ব্যবহার করুন এবং 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 প্রকার নির্দিষ্ট করুন পরিচিতির ফোন নম্বর পেতে CommonDataKinds.Phone.CONTENT_TYPE

দ্রষ্টব্য: অনেক ক্ষেত্রে, একটি নির্দিষ্ট পরিচিতি সম্পর্কে নির্দিষ্ট তথ্য দেখতে আপনার অ্যাপের 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<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
সংযুক্তির দিকে নির্দেশ করে একটি UriACTION_SEND_MULTIPLE অ্যাকশন ব্যবহার করলে, এটি পরিবর্তে একাধিক Uri অবজেক্ট ধারণকারী একটি ArrayList

উদাহরণের উদ্দেশ্য:

কোটলিন

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 বিভাগ যোগ করুন৷

অ্যান্ড্রয়েড 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.
        ...
    }
}

একটি ফটো ফেরত দেওয়ার জন্য উদ্দেশ্য ফিল্টারের উদাহরণ:

<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 থেকে কলাম ব্যবহার করে এর বিশদ বিবরণ জিজ্ঞাসা করতে পারেন।

প্রত্যাবর্তিত ইউআরআই আপনার অ্যাপটিকে ফাইলে দীর্ঘমেয়াদী পড়ার অ্যাক্সেস দেয়, সম্ভবত লেখার অ্যাক্সেস সহ। 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" ) এর জন্য একটি অভিপ্রায় ফিল্টার অন্তর্ভুক্ত করতে হবে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

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

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

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

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

একটি গাড়ী কল

Google ভয়েস অ্যাকশন

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

(শুধুমাত্র ওএস পরিধান করুন)

একটি ট্যাক্সি কল করতে, 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);
    }
}

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

<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
একটি নির্দিষ্ট জুম স্তরে প্রদত্ত দ্রাঘিমাংশ এবং অক্ষাংশে মানচিত্রটি দেখান। 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);
    }
}

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

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

একটি অনুসন্ধান ক্যোয়ারী উপর ভিত্তি করে সঙ্গীত বাজান

Google ভয়েস অ্যাকশন

  • "মাইকেল জ্যাকসন বিলি জিন খেলুন"

একটি অনুসন্ধান প্রশ্নের উপর ভিত্তি করে সঙ্গীত বাজাতে, 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 স্কিম ব্যবহার করে একটি ফোন নম্বর নির্দিষ্ট করুন৷ যখন ফোন অ্যাপটি খোলে, এটি ফোন নম্বর প্রদর্শন করে এবং ব্যবহারকারীকে ফোন কল শুরু করতে কল বোতামে ট্যাপ করতে হবে।

Google ভয়েস অ্যাকশন

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

সরাসরি একটি ফোন কল করতে, 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);
    }
}

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

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

Google ভয়েস অ্যাকশন

  • "myvideoapp এ বিড়ালের ভিডিও অনুসন্ধান করুন"

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

দ্রষ্টব্য: আমরা অ্যাপ অনুসন্ধানের জন্য SEARCH_ACTION ব্যবহার করার পরামর্শ দিই না। পরিবর্তে, অ্যাপ-মধ্যস্থ অনুসন্ধানের জন্য Google সহকারীর অন্তর্নির্মিত সমর্থন লাভের জন্য GET_THING ক্রিয়াটি প্রয়োগ করুন৷ আরও তথ্যের জন্য, Google সহকারী অ্যাপ অ্যাকশন ডকুমেন্টেশন দেখুন।

অ্যাকশন
"com.google.android.gms.actions.SEARCH_ACTION"
Google ভয়েস অ্যাকশন থেকে সার্চ কোয়েরি সমর্থন করুন।
অতিরিক্ত
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 বার্তা রচনা করুন

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

অ্যাকশন
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
সংযুক্ত করার জন্য ছবি বা ভিডিওর দিকে নির্দেশ করে একটি UriACTION_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 লোড করুন

Google ভয়েস অ্যাকশন

  • "ওপেন 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গুলির জন্য একটি অভিপ্রায় ফিল্টার অন্তর্ভুক্ত করুন৷ তারপরে, যদি ব্যবহারকারীরা আপনার অ্যাপ ইনস্টল করে থাকে, আপনার ওয়েব পৃষ্ঠার পরিবর্তে ইমেল বা অন্যান্য ওয়েব পৃষ্ঠাগুলির লিঙ্কগুলি আপনার ওয়েব সাইটের দিকে নির্দেশ করে আপনার Android অ্যাপ খুলবে৷ অ্যান্ড্রয়েড অ্যাপ লিংক হ্যান্ডলিং এ আরও জানুন।

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

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

আপনি যে ইন্টেন্টগুলিকে সমর্থন করতে চান তাতে আপনার অ্যাপটি সাড়া দেয় তা যাচাই করতে, আপনি নিম্নলিখিতগুলি করে নির্দিষ্ট ইন্টেন্টগুলি ফায়ার করতে adb টুল ব্যবহার করতে পারেন:

  1. বিকাশের জন্য একটি Android ডিভাইস সেট আপ করুন বা একটি ভার্চুয়াল ডিভাইস ব্যবহার করুন৷
  2. আপনার অ্যাপের একটি সংস্করণ ইনস্টল করুন যা আপনি সমর্থন করতে চান এমন উদ্দেশ্যগুলি পরিচালনা করে।
  3. adb ব্যবহার করে একটি উদ্দেশ্য ফায়ার করুন:
    adb shell am start -a <ACTION> -t <MIME_TYPE> -d <DATA> \
      -e <EXTRA_NAME> <EXTRA_VALUE> -n <ACTIVITY>
    

    যেমন:

    adb shell am start -a android.intent.action.DIAL \
      -d tel:555-5555 -n org.example.MyApp/.MyActivity
    
  4. আপনি যদি প্রয়োজনীয় অভিপ্রায় ফিল্টারগুলি সংজ্ঞায়িত করেন তবে অভিপ্রায়টি পরিচালনা করুন৷

আরও তথ্যের জন্য, ইস্যু শেল কমান্ড দেখুন।

,

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

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

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

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

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

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

Google ভয়েস অ্যাকশন

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

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

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

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

Google ভয়েস অ্যাকশন

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

একটি নতুন অ্যালার্ম তৈরি করতে, 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 অনুমতি থাকতে হবে:

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

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

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

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

Google ভয়েস অ্যাকশন

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

একটি কাউন্টডাউন টাইমার তৈরি করতে, 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 অনুমতি থাকতে হবে:

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

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

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

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

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

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

দ্রষ্টব্য: এই উদ্দেশ্যটি Android 4.4 (API স্তর 19) এবং উচ্চতর সংস্করণে উপলব্ধ।

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

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

<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 ব্যবহার করেন, তখন ক্যামেরাটি "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 কীভাবে তৈরি করা যায় তা সহ একটি ফটো ক্যাপচার করতে এই উদ্দেশ্যটি কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও তথ্যের জন্য, ফটো তুলুন বা ভিডিও তুলুন পড়ুন।

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

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

এই অভিপ্রায়টি পরিচালনা করার সময়, ইনকামিং Intent EXTRA_OUTPUT অতিরিক্তের জন্য আপনার কার্যকলাপ পরীক্ষা করুন, তারপর সেই অতিরিক্ত দ্বারা নির্দিষ্ট স্থানে ক্যাপচার করা চিত্র বা ভিডিওটি সংরক্ষণ করুন এবং একটি Intent সহ setResult() কল করুন যাতে একটি অতিরিক্ত নামে একটি সংকুচিত থাম্বনেইল অন্তর্ভুক্ত থাকে "data"

স্থির চিত্র মোডে একটি ক্যামেরা অ্যাপ শুরু করুন

Google ভয়েস অ্যাকশন

  • "একটি ছবি তুলুন"

স্থির চিত্র মোডে একটি ক্যামেরা অ্যাপ খুলতে, 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>

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

Google ভয়েস অ্যাকশন

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

ভিডিও মোডে একটি ক্যামেরা অ্যাপ খুলতে, 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 অ্যাকশনটি ব্যবহার করুন এবং 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 প্রকার নির্দিষ্ট করুন পরিচিতির ফোন নম্বর পেতে CommonDataKinds.Phone.CONTENT_TYPE

দ্রষ্টব্য: অনেক ক্ষেত্রে, একটি নির্দিষ্ট পরিচিতি সম্পর্কে নির্দিষ্ট তথ্য দেখতে আপনার অ্যাপের 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<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
সংযুক্তির দিকে নির্দেশ করে একটি UriACTION_SEND_MULTIPLE অ্যাকশন ব্যবহার করলে, এটি পরিবর্তে একাধিক Uri অবজেক্ট ধারণকারী একটি ArrayList

উদাহরণের উদ্দেশ্য:

কোটলিন

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 বিভাগ যোগ করুন৷

অ্যান্ড্রয়েড 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.
        ...
    }
}

একটি ফটো ফেরত দেওয়ার জন্য উদ্দেশ্য ফিল্টারের উদাহরণ:

<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 থেকে কলাম ব্যবহার করে এর বিশদ বিবরণ জিজ্ঞাসা করতে পারেন।

প্রত্যাবর্তিত ইউআরআই আপনার অ্যাপটিকে ফাইলে দীর্ঘমেয়াদী পড়ার অ্যাক্সেস দেয়, সম্ভবত লেখার অ্যাক্সেস সহ। 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" ) এর জন্য একটি অভিপ্রায় ফিল্টার অন্তর্ভুক্ত করতে হবে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

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

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

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

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

একটি গাড়ী কল

Google ভয়েস অ্যাকশন

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

(শুধুমাত্র ওএস পরিধান করুন)

একটি ট্যাক্সি কল করতে, 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);
    }
}

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

<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
একটি নির্দিষ্ট জুম স্তরে প্রদত্ত দ্রাঘিমাংশ এবং অক্ষাংশে মানচিত্রটি দেখান। 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);
    }
}

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

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

একটি অনুসন্ধান ক্যোয়ারী উপর ভিত্তি করে সঙ্গীত বাজান

Google ভয়েস অ্যাকশন

  • "মাইকেল জ্যাকসন বিলি জিন খেলুন"

একটি অনুসন্ধান প্রশ্নের উপর ভিত্তি করে সঙ্গীত বাজাতে, 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 স্কিম ব্যবহার করে একটি ফোন নম্বর নির্দিষ্ট করুন৷ যখন ফোন অ্যাপটি খোলে, এটি ফোন নম্বর প্রদর্শন করে এবং ব্যবহারকারীকে ফোন কল শুরু করতে কল বোতামে ট্যাপ করতে হবে।

Google ভয়েস অ্যাকশন

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

সরাসরি একটি ফোন কল করতে, 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);
    }
}

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

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

Google ভয়েস অ্যাকশন

  • "myvideoapp এ বিড়ালের ভিডিও অনুসন্ধান করুন"

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

দ্রষ্টব্য: আমরা অ্যাপ অনুসন্ধানের জন্য SEARCH_ACTION ব্যবহার করার পরামর্শ দিই না। পরিবর্তে, অ্যাপ-মধ্যস্থ অনুসন্ধানের জন্য Google সহকারীর অন্তর্নির্মিত সমর্থন লাভের জন্য GET_THING ক্রিয়াটি প্রয়োগ করুন৷ আরও তথ্যের জন্য, Google সহকারী অ্যাপ অ্যাকশন ডকুমেন্টেশন দেখুন।

অ্যাকশন
"com.google.android.gms.actions.SEARCH_ACTION"
Google ভয়েস অ্যাকশন থেকে সার্চ কোয়েরি সমর্থন করুন।
অতিরিক্ত
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 বার্তা রচনা করুন

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

অ্যাকশন
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
সংযুক্ত করার জন্য ছবি বা ভিডিওর দিকে নির্দেশ করে একটি UriACTION_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 লোড করুন

Google ভয়েস অ্যাকশন

  • "ওপেন 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গুলির জন্য একটি অভিপ্রায় ফিল্টার অন্তর্ভুক্ত করুন৷ তারপরে, যদি ব্যবহারকারীরা আপনার অ্যাপ ইনস্টল করে থাকে, আপনার ওয়েব পৃষ্ঠার পরিবর্তে ইমেল বা অন্যান্য ওয়েব পৃষ্ঠাগুলির লিঙ্কগুলি আপনার ওয়েব সাইটের দিকে নির্দেশ করে আপনার Android অ্যাপ খুলবে৷ অ্যান্ড্রয়েড অ্যাপ লিংক হ্যান্ডলিং এ আরও জানুন।

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

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

আপনি যে ইন্টেন্টগুলিকে সমর্থন করতে চান তাতে আপনার অ্যাপটি সাড়া দেয় তা যাচাই করতে, আপনি নিম্নলিখিতগুলি করে নির্দিষ্ট ইন্টেন্টগুলি ফায়ার করতে adb টুল ব্যবহার করতে পারেন:

  1. বিকাশের জন্য একটি Android ডিভাইস সেট আপ করুন বা একটি ভার্চুয়াল ডিভাইস ব্যবহার করুন৷
  2. আপনার অ্যাপের একটি সংস্করণ ইনস্টল করুন যা আপনি সমর্থন করতে চান এমন উদ্দেশ্যগুলি পরিচালনা করে।
  3. adb ব্যবহার করে একটি উদ্দেশ্য ফায়ার করুন:
    adb shell am start -a <ACTION> -t <MIME_TYPE> -d <DATA> \
      -e <EXTRA_NAME> <EXTRA_VALUE> -n <ACTIVITY>
    

    যেমন:

    adb shell am start -a android.intent.action.DIAL \
      -d tel:555-5555 -n org.example.MyApp/.MyActivity
    
  4. আপনি যদি প্রয়োজনীয় অভিপ্রায় ফিল্টারগুলি সংজ্ঞায়িত করেন তবে অভিপ্রায়টি পরিচালনা করুন৷

আরও তথ্যের জন্য, ইস্যু শেল কমান্ড দেখুন।