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

একটি অভিপ্রায় আপনাকে একটি 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 অনুমতি থাকতে হবে:

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

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

 ...>
    
         android:name="android.intent.action.SET_ALARM" />
         android:name="android.intent.category.DEFAULT" />
    

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

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 অনুমতি থাকতে হবে:

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

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

 ...>
    
         android:name="android.intent.action.SET_TIMER" />
         android:name="android.intent.category.DEFAULT" />
    

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

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

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

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

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

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

 ...>
    
         android:name="android.intent.action.SHOW_ALARMS" />
         android:name="android.intent.category.DEFAULT" />
    

ক্যালেন্ডার

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

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

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

অ্যাকশন
ACTION_INSERT
ডেটা URI
Events.CONTENT_URI
MIME প্রকার
"vnd.android.cursor.dir/event"
অতিরিক্ত
EXTRA_EVENT_ALL_DAY
এটি একটি সারাদিনের ইভেন্ট কিনা তা নির্দিষ্ট করে একটি বুলিয়ান৷
EXTRA_EVENT_BEGIN_TIME
ইভেন্টের শুরুর সময় (যুগ থেকে মিলিসেকেন্ড)।
EXTRA_EVENT_END_TIME
ইভেন্টের শেষ সময় (যুগ থেকে মিলিসেকেন্ড)।
TITLE
অনুষ্ঠানের শিরোনাম।
DESCRIPTION
ঘটনার বিবরণ।
EVENT_LOCATION
অনুষ্ঠানের অবস্থান।
EXTRA_EMAIL
ইমেল ঠিকানাগুলির একটি কমা দ্বারা পৃথক করা তালিকা যা আমন্ত্রিতদের নির্দিষ্ট করে৷

CalendarContract.EventsColumns ক্লাসে সংজ্ঞায়িত ধ্রুবকগুলি ব্যবহার করে আরও অনেক ইভেন্টের বিবরণ নির্দিষ্ট করা যেতে পারে।

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

কোটলিন

fun addEvent(title: String, location: String, begin: Long, end: Long) {
    val intent = Intent(Intent.ACTION_INSERT).apply {
        data = Events.CONTENT_URI
        putExtra(Events.TITLE, title)
        putExtra(Events.EVENT_LOCATION, location)
        putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, begin)
        putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

জাভা

public void addEvent(String title, String location, long begin, long end) {
    Intent intent = new Intent(Intent.ACTION_INSERT)
            .setData(Events.CONTENT_URI)
            .putExtra(Events.TITLE, title)
            .putExtra(Events.EVENT_LOCATION, location)
            .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, begin)
            .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

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

 ...>
    
         android:name="android.intent.action.INSERT" />
         android:mimeType="vnd.android.cursor.dir/event" />
         android:name="android.intent.category.DEFAULT" />
    

ক্যামেরা

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

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

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

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

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

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

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

কোটলিন

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

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

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

জাভা

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

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

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        Bitmap thumbnail = data.getParcelableExtra("data");
        // Do other work with full size photo saved in locationForPhotos.
        ...
    }
}

Android 12 (API লেভেল 31) বা তার উপরে কাজ করার সময় এটি করতে, নিম্নলিখিত উদ্দেশ্য উদাহরণটি পড়ুন।

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

কোটলিন

val REQUEST_IMAGE_CAPTURE = 1

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

জাভা

static final int REQUEST_IMAGE_CAPTURE = 1;

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

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

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

 ...>
    
         android:name="android.media.action.IMAGE_CAPTURE" />
         android:name="android.intent.category.DEFAULT" />
    

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

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

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

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

 ...>
    
         android:name="android.media.action.STILL_IMAGE_CAMERA" />
         android:name="android.intent.category.DEFAULT" />
    

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

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

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

 ...>
    
         android:name="android.media.action.VIDEO_CAMERA" />
         android:name="android.intent.category.DEFAULT" />
    

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

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

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

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

আপনার onActivityResult() কলব্যাকে বিতরণ করা ফলাফলের Intent content: URI নির্বাচিত পরিচিতির দিকে নির্দেশ করে। প্রতিক্রিয়া আপনার অ্যাপটিকে পরিচিতি প্রদানকারী API ব্যবহার করে সেই পরিচিতিটি পড়ার জন্য অস্থায়ী অনুমতি দেয়, এমনকি যদি আপনার অ্যাপে READ_CONTACTS অনুমতি অন্তর্ভুক্ত না থাকে।

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

অ্যাকশন
ACTION_PICK
ডেটা ইউআরআই স্কিম
কোনোটিই নয়
MIME প্রকার
Contacts.CONTENT_TYPE

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

কোটলিন

const val REQUEST_SELECT_CONTACT = 1

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

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

জাভা

static final int REQUEST_SELECT_CONTACT = 1;

public void selectContact() {
    Intent intent = new Intent(Intent.ACTION_PICK);
    intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(intent, REQUEST_SELECT_CONTACT);
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_SELECT_CONTACT && resultCode == RESULT_OK) {
        Uri contactUri = data.getData();
        // Do something with the selected contact at contactUri.
        ...
    }
}

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

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

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

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

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

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

আপনার onActivityResult() কলব্যাকে বিতরিত ফলাফলের Intent content: URI নির্বাচিত যোগাযোগের ডেটা নির্দেশ করে। প্রতিক্রিয়া আপনার অ্যাপটিকে সেই যোগাযোগের ডেটা পড়ার জন্য অস্থায়ী অনুমতি দেয় এমনকি যদি আপনার অ্যাপে READ_CONTACTS অনুমতি অন্তর্ভুক্ত না থাকে।

অ্যাকশন
ACTION_PICK
ডেটা ইউআরআই স্কিম
কোনোটিই নয়
MIME প্রকার
CommonDataKinds.Phone.CONTENT_TYPE
একটি ফোন নম্বর সহ পরিচিতি থেকে চয়ন করুন।
CommonDataKinds.Email.CONTENT_TYPE
একটি ইমেল ঠিকানা সহ পরিচিতি থেকে চয়ন করুন.
CommonDataKinds.StructuredPostal.CONTENT_TYPE
একটি ডাক ঠিকানা সহ পরিচিতি থেকে চয়ন করুন.

অথবা ContactsContract অধীনে অন্যান্য অনেক CONTENT_TYPE মানগুলির মধ্যে একটি।

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

কোটলিন

const val REQUEST_SELECT_PHONE_NUMBER = 1

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

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

জাভা

static final int REQUEST_SELECT_PHONE_NUMBER = 1;

public void selectContact() {
    // Start an activity for the user to pick a phone number from contacts.
    Intent intent = new Intent(Intent.ACTION_PICK);
    intent.setType(CommonDataKinds.Phone.CONTENT_TYPE);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(intent, REQUEST_SELECT_PHONE_NUMBER);
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_SELECT_PHONE_NUMBER && resultCode == RESULT_OK) {
        // Get the URI and query the content provider for the phone number.
        Uri contactUri = data.getData();
        String[] projection = new String[]{CommonDataKinds.Phone.NUMBER};
        Cursor cursor = getContentResolver().query(contactUri, projection,
                null, null, null);
        // If the cursor returned is valid, get the phone number.
        if (cursor != null && cursor.moveToFirst()) {
            int numberIndex = cursor.getColumnIndex(CommonDataKinds.Phone.NUMBER);
            String number = cursor.getString(numberIndex);
            // Do something with the phone number.
            //...
        }
    }
}

একটি পরিচিতি দেখুন

পরিচিত পরিচিতির বিশদ বিবরণ প্রদর্শন করতে, ACTION_VIEW ক্রিয়াটি ব্যবহার করুন এবং একটি content: উদ্দেশ্য ডেটা হিসাবে URI৷

প্রাথমিকভাবে পরিচিতির URI পুনরুদ্ধার করার দুটি প্রাথমিক উপায় রয়েছে:

অ্যাকশন
ACTION_VIEW
ডেটা ইউআরআই স্কিম
content:
MIME প্রকার
কোনোটিই নয়। যোগাযোগের URI থেকে টাইপ অনুমান করা হয়েছে।

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

কোটলিন

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

জাভা

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

একটি বিদ্যমান পরিচিতি সম্পাদনা করুন

একটি পরিচিত পরিচিতি সম্পাদনা করতে, ACTION_EDIT ক্রিয়াটি ব্যবহার করুন, একটি content: উদ্দেশ্য ডেটা হিসাবে URI, এবং ContactsContract.Intents.Insert এ ধ্রুবক দ্বারা নির্দিষ্ট করা অতিরিক্তগুলিতে পরিচিত যেকোন যোগাযোগের তথ্য অন্তর্ভুক্ত করুন।

প্রাথমিকভাবে যোগাযোগের URI পুনরুদ্ধার করার দুটি প্রাথমিক উপায় রয়েছে:

অ্যাকশন
ACTION_EDIT
ডেটা ইউআরআই স্কিম
content:
MIME প্রকার
যোগাযোগের URI থেকে টাইপ অনুমান করা হয়েছে।
অতিরিক্ত
ContactsContract.Intents.Insert এ সংজ্ঞায়িত এক বা একাধিক অতিরিক্ত যাতে আপনি যোগাযোগের বিবরণের ক্ষেত্রগুলি পূরণ করতে পারেন৷

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

কোটলিন

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

জাভা

public void editContact(Uri contactUri, String email) {
    Intent intent = new Intent(Intent.ACTION_EDIT);
    intent.setData(contactUri);
    intent.putExtra(Intents.Insert.EMAIL, email);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

কিভাবে একটি পরিচিতি সম্পাদনা করতে হয় সে সম্পর্কে আরও তথ্যের জন্য, ইন্টেন্ট ব্যবহার করে পরিচিতি সংশোধন করুন পড়ুন।

একটি পরিচিতি সন্নিবেশ করুন

একটি নতুন পরিচিতি সন্নিবেশ করতে, ACTION_INSERT অ্যাকশনটি ব্যবহার করুন, MIME প্রকার হিসাবে Contacts.CONTENT_TYPE নির্দিষ্ট করুন এবং ContactsContract.Intents.Insert এ ধ্রুবক দ্বারা নির্দিষ্ট করা অতিরিক্তগুলিতে পরিচিত কোনো পরিচিতি তথ্য অন্তর্ভুক্ত করুন।

অ্যাকশন
ACTION_INSERT
ডেটা ইউআরআই স্কিম
কোনোটিই নয়
MIME প্রকার
Contacts.CONTENT_TYPE
অতিরিক্ত
ContactsContract.Intents.Insert এ সংজ্ঞায়িত এক বা একাধিক অতিরিক্ত।

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

কোটলিন

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

জাভা

public void insertContact(String name, String email) {
    Intent intent = new Intent(Intent.ACTION_INSERT);
    intent.setType(Contacts.CONTENT_TYPE);
    intent.putExtra(Intents.Insert.NAME, name);
    intent.putExtra(Intents.Insert.EMAIL, email);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

কিভাবে একটি পরিচিতি সন্নিবেশ করতে হয় সে সম্পর্কে আরও তথ্যের জন্য, ইন্টেন্ট ব্যবহার করে পরিচিতিগুলি পরিবর্তন করুন পড়ুন।

ইমেইল

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

ঐচ্ছিক সংযুক্তি সহ একটি ইমেল রচনা করুন

একটি ইমেল রচনা করতে, আপনি সংযুক্তিগুলি অন্তর্ভুক্ত করবেন কি না তার উপর ভিত্তি করে নিম্নলিখিত ক্রিয়াগুলির মধ্যে একটি ব্যবহার করুন এবং তালিকাভুক্ত অতিরিক্ত কীগুলি ব্যবহার করে প্রাপক এবং বিষয়ের মতো ইমেলের বিবরণ অন্তর্ভুক্ত করুন৷

অ্যাকশন
ACTION_SENDTO (কোনও সংযুক্তির জন্য) বা৷
ACTION_SEND (একটি সংযুক্তির জন্য) বা৷
ACTION_SEND_MULTIPLE (একাধিক সংযুক্তির জন্য)
ডেটা ইউআরআই স্কিম
কোনোটিই নয়
MIME প্রকার
"text/plain"
"*/*"
অতিরিক্ত
Intent.EXTRA_EMAIL
সমস্ত "প্রতি" প্রাপকের ইমেল ঠিকানাগুলির একটি স্ট্রিং অ্যারে৷
Intent.EXTRA_CC
সমস্ত "CC" প্রাপকের ইমেল ঠিকানাগুলির একটি স্ট্রিং অ্যারে৷
Intent.EXTRA_BCC
সমস্ত "BCC" প্রাপকের ইমেল ঠিকানাগুলির একটি স্ট্রিং অ্যারে৷
Intent.EXTRA_SUBJECT
ইমেল বিষয় সহ একটি স্ট্রিং।
Intent.EXTRA_TEXT
ইমেলের মূল অংশের সাথে একটি স্ট্রিং।
Intent.EXTRA_STREAM
সংযুক্তির দিকে নির্দেশ করে একটি UriACTION_SEND_MULTIPLE অ্যাকশন ব্যবহার করলে, এটি পরিবর্তে একাধিক Uri অবজেক্ট ধারণকারী একটি ArrayList

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

কোটলিন

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

জাভা

public void composeEmail(String[] addresses, String subject, Uri attachment) {
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("*/*");
    intent.putExtra(Intent.EXTRA_EMAIL, addresses);
    intent.putExtra(Intent.EXTRA_SUBJECT, subject);
    intent.putExtra(Intent.EXTRA_STREAM, attachment);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

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

কোটলিন

fun composeEmail(addresses: Array, subject: String) {
    val intent = Intent(Intent.ACTION_SENDTO).apply {
        data = Uri.parse("mailto:") // Only email apps handle this.
        putExtra(Intent.EXTRA_EMAIL, addresses)
        putExtra(Intent.EXTRA_SUBJECT, subject)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

জাভা

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

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

 ...>
    
         android:name="android.intent.action.SEND" />
         android:type="*/*" />
         android:name="android.intent.category.DEFAULT" />
    
    
         android:name="android.intent.action.SENDTO" />
         android:scheme="mailto" />
         android:name="android.intent.category.DEFAULT" />
    

ফাইল স্টোরেজ

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

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

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

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

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

অ্যান্ড্রয়েড 4.3 (API লেভেল 18) এবং উচ্চতর তে, আপনি ইন্টেন্টে EXTRA_ALLOW_MULTIPLE যোগ করে ব্যবহারকারীকে একাধিক ফাইল নির্বাচন করতে দিতে পারেন, true সেট করা। তারপর আপনি getClipData() দ্বারা ফিরে আসা একটি ClipData অবজেক্টে নির্বাচিত প্রতিটি ফাইল অ্যাক্সেস করতে পারবেন।

অ্যাকশন
ACTION_GET_CONTENT
ডেটা ইউআরআই স্কিম
কোনোটিই নয়
MIME প্রকার
ব্যবহারকারীকে যে ফাইলটি নির্বাচন করতে হবে তার সাথে সঙ্গতিপূর্ণ MIME প্রকার৷
অতিরিক্ত
EXTRA_ALLOW_MULTIPLE
একটি বুলিয়ান যা ঘোষণা করে যে ব্যবহারকারী একবারে একাধিক ফাইল নির্বাচন করতে পারে কিনা।
EXTRA_LOCAL_ONLY
একটি বুলিয়ান যা ঘোষণা করে যে প্রত্যাবর্তিত ফাইলটি দূরবর্তী পরিষেবা থেকে ডাউনলোডের প্রয়োজন না করে সরাসরি ডিভাইস থেকে উপলব্ধ হবে কিনা।
বিভাগ (ঐচ্ছিক)
CATEGORY_OPENABLE
openFileDescriptor() এর সাথে ফাইল স্ট্রীম হিসাবে উপস্থাপন করা যেতে পারে এমন শুধুমাত্র "খোলা" ফাইলগুলি ফেরত দিতে।

একটি ফটো পেতে উদাহরন উদাহরণ:

কোটলিন

const val REQUEST_IMAGE_GET = 1

fun selectImage() {
    val intent = Intent(Intent.ACTION_GET_CONTENT).apply {
        type = "image/*"
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivityForResult(intent, REQUEST_IMAGE_GET)
    }
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    if (requestCode == REQUEST_IMAGE_GET && resultCode == Activity.RESULT_OK) {
        val thumbnail: Bitmap = data.getParcelableExtra("data")
        val fullPhotoUri: Uri = data.data
        // Do work with photo saved at fullPhotoUri.
        ...
    }
}

জাভা

static final int REQUEST_IMAGE_GET = 1;

public void selectImage() {
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("image/*");
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(intent, REQUEST_IMAGE_GET);
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_GET && resultCode == RESULT_OK) {
        Bitmap thumbnail = data.getParcelable("data");
        Uri fullPhotoUri = data.getData();
        // Do work with photo saved at fullPhotoUri.
        ...
    }
}

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

 ...>
    
         android:name="android.intent.action.GET_CONTENT" />
         android:type="image/*" />
         android:name="android.intent.category.DEFAULT" />
        
         android:name="android.intent.category.OPENABLE" />
    

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

ACTION_GET_CONTENT অ্যাকশন ব্যবহার করে আপনার অ্যাপে আমদানি করতে হবে এমন একটি ফাইলের কপি পুনরুদ্ধার করার পরিবর্তে, Android 4.4 বা উচ্চতর সংস্করণে চলাকালীন আপনি ACTION_OPEN_DOCUMENT অ্যাকশন ব্যবহার করে এবং একটি MIME প্রকার নির্দিষ্ট করে অন্য অ্যাপ দ্বারা পরিচালিত একটি ফাইল খোলার অনুরোধ করতে পারেন। ব্যবহারকারীকে একটি নতুন দস্তাবেজ তৈরি করতে দিতে যা আপনার অ্যাপ লিখতে পারে, পরিবর্তে ACTION_CREATE_DOCUMENT অ্যাকশনটি ব্যবহার করুন৷

উদাহরণস্বরূপ, বিদ্যমান PDF নথিগুলি থেকে নির্বাচন করার পরিবর্তে, ACTION_CREATE_DOCUMENT উদ্দেশ্য ব্যবহারকারীদের নির্বাচন করতে দেয় যেখানে তারা একটি নতুন নথি তৈরি করতে চান, যেমন অন্য একটি অ্যাপের মধ্যে যা নথির সঞ্চয়স্থান পরিচালনা করে৷ আপনার অ্যাপটি তখন URI অবস্থান পায় যেখানে এটি নতুন নথি লিখতে পারে।

যেখানে ACTION_GET_CONTENT অ্যাকশন থেকে আপনার onActivityResult() পদ্ধতিতে বিতরিত অভিপ্রায় যে কোনো ধরনের URI ফেরত দিতে পারে, ACTION_OPEN_DOCUMENT এবং ACTION_CREATE_DOCUMENT থেকে ফলাফলের অভিপ্রায় সর্বদা একটি content: URI যা একটি DocumentsProvider দ্বারা সমর্থিত৷ আপনি openFileDescriptor() দিয়ে ফাইলটি খুলতে পারেন এবং DocumentsContract.Document থেকে কলাম ব্যবহার করে এর বিশদ বিবরণ জিজ্ঞাসা করতে পারেন।

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

আপনি উদ্দেশ্যটিতে EXTRA_ALLOW_MULTIPLE যোগ করে ব্যবহারকারীকে একাধিক ফাইল নির্বাচন করতে দিতে পারেন, true সেট করা হয়েছে৷ যদি ব্যবহারকারী শুধুমাত্র একটি আইটেম নির্বাচন করে, তাহলে আপনি getData() থেকে আইটেমটি পুনরুদ্ধার করতে পারেন। ব্যবহারকারী যদি একাধিক আইটেম নির্বাচন করে, তাহলে getData() নাল ফেরত দেয় এবং আপনাকে অবশ্যই একটি ClipData অবজেক্ট থেকে প্রতিটি আইটেম পুনরুদ্ধার করতে হবে যা getClipData() দ্বারা ফেরত দেওয়া হয়।

দ্রষ্টব্য: আপনার উদ্দেশ্য অবশ্যই একটি MIME প্রকার নির্দিষ্ট করতে হবে এবং CATEGORY_OPENABLE বিভাগ ঘোষণা করতে হবে ৷ উপযুক্ত হলে, আপনি EXTRA_MIME_TYPES অতিরিক্তের সাথে MIME প্রকারের একটি অ্যারে যোগ করে একাধিক MIME প্রকার নির্দিষ্ট করতে পারেন—যদি আপনি তা করেন, তাহলে আপনাকে setType() এ প্রাথমিক MIME প্রকারটি "*/*" এ সেট করতে হবে।

অ্যাকশন
ACTION_OPEN_DOCUMENT বা
ACTION_CREATE_DOCUMENT
ডেটা ইউআরআই স্কিম
কোনোটিই নয়
MIME প্রকার
ব্যবহারকারীকে যে ফাইলটি নির্বাচন করতে হবে তার সাথে সঙ্গতিপূর্ণ MIME প্রকার৷
অতিরিক্ত
EXTRA_MIME_TYPES
আপনার অ্যাপের অনুরোধ করা ফাইলের প্রকারের সাথে সঙ্গতিপূর্ণ MIME প্রকারের একটি অ্যারে। আপনি যখন এই অতিরিক্ত ব্যবহার করবেন, তখন আপনাকে অবশ্যই setType() এ প্রাথমিক MIME প্রকারটি "*/*" এ সেট করতে হবে।
EXTRA_ALLOW_MULTIPLE
একটি বুলিয়ান যা ঘোষণা করে যে ব্যবহারকারী একবারে একাধিক ফাইল নির্বাচন করতে পারে কিনা।
EXTRA_TITLE
একটি প্রাথমিক ফাইলের নাম নির্দিষ্ট করতে ACTION_CREATE_DOCUMENT সাথে ব্যবহারের জন্য৷
EXTRA_LOCAL_ONLY
একটি বুলিয়ান যা ঘোষণা করে যে প্রত্যাবর্তিত ফাইলটি দূরবর্তী পরিষেবা থেকে ডাউনলোডের প্রয়োজন না করে সরাসরি ডিভাইস থেকে উপলব্ধ হবে কিনা।
শ্রেণী
CATEGORY_OPENABLE
openFileDescriptor() এর সাথে ফাইল স্ট্রীম হিসাবে উপস্থাপন করা যেতে পারে এমন শুধুমাত্র "খোলা" ফাইলগুলি ফেরত দিতে।

একটি ফটো পেতে উদাহরন উদাহরণ:

কোটলিন

const val REQUEST_IMAGE_OPEN = 1

fun selectImage2() {
    val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
        type = "image/*"
        addCategory(Intent.CATEGORY_OPENABLE)
    }
    // Only the system receives the ACTION_OPEN_DOCUMENT, so no need to test.
    startActivityForResult(intent, REQUEST_IMAGE_OPEN)
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    if (requestCode == REQUEST_IMAGE_OPEN && resultCode == Activity.RESULT_OK) {
        val fullPhotoUri: Uri = data.data
        // Do work with full size photo saved at fullPhotoUri.
        ...
    }
}

জাভা

static final int REQUEST_IMAGE_OPEN = 1;

public void selectImage() {
    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
    intent.setType("image/*");
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    // Only the system receives the ACTION_OPEN_DOCUMENT, so no need to test.
    startActivityForResult(intent, REQUEST_IMAGE_OPEN);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_OPEN && resultCode == RESULT_OK) {
        Uri fullPhotoUri = data.getData();
        // Do work with full size photo saved at fullPhotoUri.
        ...
    }
}

তৃতীয় পক্ষের অ্যাপ্লিকেশানগুলি ACTION_OPEN_DOCUMENT অ্যাকশনের মাধ্যমে একটি অভিপ্রায়ে সাড়া দিতে পারে না৷ পরিবর্তে, সিস্টেমটি এই অভিপ্রায়টি গ্রহণ করে এবং একটি ইউনিফাইড ইউজার ইন্টারফেসে বিভিন্ন অ্যাপ থেকে উপলব্ধ সমস্ত ফাইল প্রদর্শন করে।

এই UI-তে আপনার অ্যাপের ফাইলগুলি প্রদান করতে এবং অন্যান্য অ্যাপগুলিকে সেগুলি খুলতে দিতে, আপনাকে অবশ্যই একটি DocumentsProvider প্রয়োগ করতে হবে এবং PROVIDER_INTERFACE ( "android.content.action.DOCUMENTS_PROVIDER" ) এর জন্য একটি অভিপ্রায় ফিল্টার অন্তর্ভুক্ত করতে হবে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

 ...
    android:grantUriPermissions="true"
    android:exported="true"
    android:permission="android.permission.MANAGE_DOCUMENTS">
    
         android:name="android.content.action.DOCUMENTS_PROVIDER" />
    

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

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

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

একটি গাড়ী কল

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

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

 ...>
    
         android:name="com.google.android.gms.actions.RESERVE_TAXI_RESERVATION" />
         android:name="android.intent.category.DEFAULT" />
    

মানচিত্র

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

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

একটি মানচিত্র খুলতে, ACTION_VIEW ক্রিয়াটি ব্যবহার করুন এবং নিম্নলিখিত স্কিমগুলির মধ্যে একটির সাথে উদ্দেশ্য ডেটাতে অবস্থানের তথ্য নির্দিষ্ট করুন৷

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

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

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

উদাহরণ: "geo:47.6,-122.3?z=11"

geo:0,0?q=lat,lng(label)
একটি স্ট্রিং লেবেল সহ প্রদত্ত দ্রাঘিমাংশ এবং অক্ষাংশে মানচিত্রটি দেখান।

উদাহরণ: "geo:0,0?q=34.99,-106.61(Treasure)"

geo:0,0?q=my+street+address
"আমার রাস্তার ঠিকানা" এর অবস্থান দেখান যা একটি নির্দিষ্ট ঠিকানা বা অবস্থানের প্রশ্ন হতে পারে৷

উদাহরণ: "geo:0,0?q=1600+Amphitheatre+Parkway%2C+CA"

দ্রষ্টব্য: geo ইউআরআই-তে পাস করা সমস্ত স্ট্রিং অবশ্যই এনকোড করা উচিত। উদাহরণস্বরূপ, স্ট্রিং 1st & Pike, Seattle 1st%20%26%20Pike%2C%20Seattle হয়। স্ট্রিং-এর স্পেসগুলি %20 দিয়ে এনকোড করা হয় বা প্লাস চিহ্ন ( + ) দিয়ে প্রতিস্থাপিত হয়।

MIME প্রকার
কোনোটিই নয়

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

কোটলিন

fun showMap(geoLocation: Uri) {
    val intent = Intent(Intent.ACTION_VIEW).apply {
        data = geoLocation
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

জাভা

public void showMap(Uri geoLocation) {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(geoLocation);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

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

 ...>
    
         android:name="android.intent.action.VIEW" />
         android:scheme="geo" />
         android:name="android.intent.category.DEFAULT" />
    

মিউজিক বা ভিডিও

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

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

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

অ্যাকশন
ACTION_VIEW
ডেটা ইউআরআই স্কিম
file:
content:
http:
MIME প্রকার
"audio/*"
"application/ogg"
"application/x-ogg"
"application/itunes"
অথবা আপনার অ্যাপের প্রয়োজন অন্য কোনো।

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

কোটলিন

fun playMedia(file: Uri) {
    val intent = Intent(Intent.ACTION_VIEW).apply {
        data = file
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

জাভা

public void playMedia(Uri file) {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(file);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

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

 ...>
    
         android:name="android.intent.action.VIEW" />
         android:type="audio/*" />
         android:type="application/ogg" />
         android:name="android.intent.category.DEFAULT" />
    

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

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

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

 ...>
    
         android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH" />
         android:name="android.intent.category.DEFAULT" />
    

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

কোটলিন

override fun onCreate(savedInstanceState: Bundle?) {
    ...
    if (intent.action.compareTo(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH) == 0) {

        val mediaFocus: String? = intent.getStringExtra(MediaStore.EXTRA_MEDIA_FOCUS)
        val query: String? = intent.getStringExtra(SearchManager.QUERY)

        // Some of these extras might not be available depending on the search mode.
        val album: String? = intent.getStringExtra(MediaStore.EXTRA_MEDIA_ALBUM)
        val artist: String? = intent.getStringExtra(MediaStore.EXTRA_MEDIA_ARTIST)
        val genre: String? = intent.getStringExtra("android.intent.extra.genre")
        val playlist: String? = intent.getStringExtra("android.intent.extra.playlist")
        val title: String? = intent.getStringExtra(MediaStore.EXTRA_MEDIA_TITLE)

        // Determine the search mode and use the corresponding extras.
        when {
            mediaFocus == null -> {
                // 'Unstructured' search mode (backward compatible)
                playUnstructuredSearch(query)
            }
            mediaFocus.compareTo("vnd.android.cursor.item/*") == 0 -> {
                if (query?.isNotEmpty() == true) {
                    // 'Unstructured' search mode.
                    playUnstructuredSearch(query)
                } else {
                    // 'Any' search mode.
                    playResumeLastPlaylist()
                }
            }
            mediaFocus.compareTo(MediaStore.Audio.Genres.ENTRY_CONTENT_TYPE) == 0 -> {
                // 'Genre' search mode.
                playGenre(genre)
            }
            mediaFocus.compareTo(MediaStore.Audio.Artists.ENTRY_CONTENT_TYPE) == 0 -> {
                // 'Artist' search mode.
                playArtist(artist, genre)
            }
            mediaFocus.compareTo(MediaStore.Audio.Albums.ENTRY_CONTENT_TYPE) == 0 -> {
                // 'Album' search mode.
                playAlbum(album, artist)
            }
            mediaFocus.compareTo("vnd.android.cursor.item/audio") == 0 -> {
                // 'Song' search mode.
                playSong(album, artist, genre, title)
            }
            mediaFocus.compareTo(MediaStore.Audio.Playlists.ENTRY_CONTENT_TYPE) == 0 -> {
                // 'Playlist' search mode.
                playPlaylist(album, artist, genre, playlist, title)
            }
        }
    }
}

জাভা

protected void onCreate(Bundle savedInstanceState) {
    //...
    Intent intent = this.getIntent();
    if (intent.getAction().compareTo(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH) == 0) {

        String mediaFocus = intent.getStringExtra(MediaStore.EXTRA_MEDIA_FOCUS);
        String query = intent.getStringExtra(SearchManager.QUERY);

        // Some of these extras might not be available depending on the search mode.
        String album = intent.getStringExtra(MediaStore.EXTRA_MEDIA_ALBUM);
        String artist = intent.getStringExtra(MediaStore.EXTRA_MEDIA_ARTIST);
        String genre = intent.getStringExtra("android.intent.extra.genre");
        String playlist = intent.getStringExtra("android.intent.extra.playlist");
        String title = intent.getStringExtra(MediaStore.EXTRA_MEDIA_TITLE);

        // Determine the search mode and use the corresponding extras.
        if (mediaFocus == null) {
            // 'Unstructured' search mode (backward compatible).
            playUnstructuredSearch(query);

        } else if (mediaFocus.compareTo("vnd.android.cursor.item/*") == 0) {
            if (query.isEmpty()) {
                // 'Any' search mode.
                playResumeLastPlaylist();
            } else {
                // 'Unstructured' search mode.
                playUnstructuredSearch(query);
            }

        } else if (mediaFocus.compareTo(MediaStore.Audio.Genres.ENTRY_CONTENT_TYPE) == 0) {
            // 'Genre' search mode.
            playGenre(genre);

        } else if (mediaFocus.compareTo(MediaStore.Audio.Artists.ENTRY_CONTENT_TYPE) == 0) {
            // 'Artist' search mode.
            playArtist(artist, genre);

        } else if (mediaFocus.compareTo(MediaStore.Audio.Albums.ENTRY_CONTENT_TYPE) == 0) {
            // 'Album' search mode.
            playAlbum(album, artist);

        } else if (mediaFocus.compareTo("vnd.android.cursor.item/audio") == 0) {
            // 'Song' search mode.
            playSong(album, artist, genre, title);

        } else if (mediaFocus.compareTo(MediaStore.Audio.Playlists.ENTRY_CONTENT_TYPE) == 0) {
            // 'Playlist' search mode.
            playPlaylist(album, artist, genre, playlist, title);
        }
    }
}

নতুন নোট

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

একটি নোট তৈরি করুন

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

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

অ্যাকশন
ACTION_CREATE_NOTE
ডেটা ইউআরআই স্কিম
কোনোটিই নয়
MIME প্রকার
PLAIN_TEXT_TYPE
"*/*"
অতিরিক্ত
EXTRA_NAME
নোটের শিরোনাম বা বিষয় নির্দেশ করে এমন একটি স্ট্রিং।
EXTRA_TEXT
একটি স্ট্রিং নোটের পাঠ্য নির্দেশ করে।

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

কোটলিন

fun createNote(subject: String, text: String) {
    val intent = Intent(NoteIntents.ACTION_CREATE_NOTE).apply {
        putExtra(NoteIntents.EXTRA_NAME, subject)
        putExtra(NoteIntents.EXTRA_TEXT, text)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

জাভা

public void createNote(String subject, String text) {
    Intent intent = new Intent(NoteIntents.ACTION_CREATE_NOTE)
            .putExtra(NoteIntents.EXTRA_NAME, subject)
            .putExtra(NoteIntents.EXTRA_TEXT, text);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

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

 ...>
    
         android:name="com.google.android.gms.actions.CREATE_NOTE" />
         android:name="android.intent.category.DEFAULT" />
         android:mimeType="*/*" />
    

ফোন

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

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

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

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

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

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

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

 android:name="android.permission.CALL_PHONE" />
অ্যাকশন
  • ACTION_DIAL - ডায়ালার বা ফোন অ্যাপ খোলে।
  • ACTION_CALL - একটি ফোন কল করে ( CALL_PHONE অনুমতি প্রয়োজন)
ডেটা ইউআরআই স্কিম
  • tel:
  • voicemail:
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
একটি স্ট্রিং যা অনুসন্ধান ক্যোয়ারী ধারণ করে।

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

 android:name=".SearchActivity">
    
         android:name="com.google.android.gms.actions.SEARCH_ACTION"/>
         android:name="android.intent.category.DEFAULT"/>
    

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

একটি ওয়েব অনুসন্ধান শুরু করতে, 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:
smsto:
mms:
mmsto:

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

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

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

 ...>
    
         android:name="android.intent.action.SEND" />
         android:type="text/plain" />
         android:type="image/*" />
         android:name="android.intent.category.DEFAULT" />
    

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

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

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

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

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

  • "ওপেন example.com"

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

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

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

 ...>
    
         android:name="android.intent.action.VIEW" />
        
         android:scheme="http" android:host="www.example.com" />
         android:name="android.intent.category.DEFAULT" />
        
         android:name="android.intent.category.BROWSABLE" />
    

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

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

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

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

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

    যেমন:

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

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

,

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

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

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

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

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

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

গুগল ভয়েস ক্রিয়া

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

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

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

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

গুগল ভয়েস ক্রিয়া

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

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

দ্রষ্টব্য: কেবলমাত্র ঘন্টা, মিনিট এবং বার্তার অতিরিক্তগুলি অ্যান্ড্রয়েড 2.3 (এপিআই স্তর 9) এবং কম এ উপলব্ধ। অন্যান্য অতিরিক্তগুলি প্ল্যাটফর্মের উচ্চতর সংস্করণে উপলব্ধ।

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

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

EXTRA_RINGTONE
একটি content: ইউআরআই অ্যালার্মের সাথে ব্যবহার করার জন্য একটি রিংটোন নির্দিষ্ট করে, বা কোনও রিংটোনটির জন্য VALUE_RINGTONE_SILENT

ডিফল্ট রিংটোন ব্যবহার করতে, এই অতিরিক্ত নির্দিষ্ট করবেন না।

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

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

কোটলিন

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

জাভা

public void createAlarm(String message, int hour, int minutes) {
    Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM)
            .putExtra(AlarmClock.EXTRA_MESSAGE, message)
            .putExtra(AlarmClock.EXTRA_HOUR, hour)
            .putExtra(AlarmClock.EXTRA_MINUTES, minutes);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}
দ্রষ্টব্য:

ACTION_SET_ALARM অভিপ্রায়টি আহ্বান করতে, আপনার অ্যাপ্লিকেশনটিতে অবশ্যই SET_ALARM অনুমতি থাকতে হবে:

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

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

 ...>
    
         android:name="android.intent.action.SET_ALARM" />
         android:name="android.intent.category.DEFAULT" />
    

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

গুগল ভয়েস ক্রিয়া

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

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

দ্রষ্টব্য: এই অভিপ্রায়টি অ্যান্ড্রয়েড 4.4 (এপিআই স্তর 19) এবং উচ্চতর এ উপলব্ধ।

অ্যাকশন
ACTION_SET_TIMER
ডেটা URI
কোনোটিই নয়
MIME প্রকার
কোনোটিই নয়
অতিরিক্ত
EXTRA_LENGTH
সেকেন্ডে টাইমার দৈর্ঘ্য।
EXTRA_MESSAGE
টাইমার সনাক্ত করার জন্য একটি কাস্টম বার্তা।
EXTRA_SKIP_UI
একটি বুলিয়ান নির্দিষ্ট করে যে টাইমার সেট করার সময় প্রতিক্রিয়াশীল অ্যাপটি অবশ্যই তার ইউআই এড়িয়ে যেতে হবে কিনা। যদি সত্য হয় তবে অ্যাপ্লিকেশনটিকে অবশ্যই কোনও নিশ্চিতকরণ ইউআই বাইপাস করতে হবে এবং নির্দিষ্ট টাইমারটি শুরু করতে হবে।

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

কোটলিন

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

জাভা

public void startTimer(String message, int seconds) {
    Intent intent = new Intent(AlarmClock.ACTION_SET_TIMER)
            .putExtra(AlarmClock.EXTRA_MESSAGE, message)
            .putExtra(AlarmClock.EXTRA_LENGTH, seconds)
            .putExtra(AlarmClock.EXTRA_SKIP_UI, true);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}
দ্রষ্টব্য:

ACTION_SET_TIMER অভিপ্রায়টি আহ্বান করতে, আপনার অ্যাপ্লিকেশনটিতে অবশ্যই SET_ALARM অনুমতি থাকতে হবে:

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

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

 ...>
    
         android:name="android.intent.action.SET_TIMER" />
         android:name="android.intent.category.DEFAULT" />
    

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

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

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

দ্রষ্টব্য: এই অভিপ্রায়টি অ্যান্ড্রয়েড 4.4 (এপিআই স্তর 19) এবং উচ্চতর এ উপলব্ধ।

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

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

 ...>
    
         android:name="android.intent.action.SHOW_ALARMS" />
         android:name="android.intent.category.DEFAULT" />
    

ক্যালেন্ডার

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

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

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

অ্যাকশন
ACTION_INSERT
ডেটা URI
Events.CONTENT_URI
MIME প্রকার
"vnd.android.cursor.dir/event"
অতিরিক্ত
EXTRA_EVENT_ALL_DAY
এটি একটি সারাদিনের ইভেন্ট কিনা তা নির্দিষ্ট করে একটি বুলিয়ান।
EXTRA_EVENT_BEGIN_TIME
ইভেন্টের শুরুর সময় (যুগের পর থেকে মিলিসেকেন্ডস)।
EXTRA_EVENT_END_TIME
ইভেন্টের শেষ সময় (যুগের পর থেকে মিলিসেকেন্ড)।
TITLE
ইভেন্টের শিরোনাম।
DESCRIPTION
ঘটনার বিবরণ।
EVENT_LOCATION
অনুষ্ঠানের অবস্থান।
EXTRA_EMAIL
ইমেল ঠিকানাগুলির একটি কমা-বিচ্ছিন্ন তালিকা যা আমন্ত্রিতদের নির্দিষ্ট করে।

CalendarContract.EventsColumns ক্লাসে সংজ্ঞায়িত ধ্রুবকগুলি ব্যবহার করে আরও অনেক ইভেন্টের বিশদ নির্দিষ্ট করা যেতে পারে।

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

কোটলিন

fun addEvent(title: String, location: String, begin: Long, end: Long) {
    val intent = Intent(Intent.ACTION_INSERT).apply {
        data = Events.CONTENT_URI
        putExtra(Events.TITLE, title)
        putExtra(Events.EVENT_LOCATION, location)
        putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, begin)
        putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

জাভা

public void addEvent(String title, String location, long begin, long end) {
    Intent intent = new Intent(Intent.ACTION_INSERT)
            .setData(Events.CONTENT_URI)
            .putExtra(Events.TITLE, title)
            .putExtra(Events.EVENT_LOCATION, location)
            .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, begin)
            .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, end);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

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

 ...>
    
         android:name="android.intent.action.INSERT" />
         android:mimeType="vnd.android.cursor.dir/event" />
         android:name="android.intent.category.DEFAULT" />
    

ক্যামেরা

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

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

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

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

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

দ্রষ্টব্য: আপনি যখন কোনও ফটো ক্যাপচার করতে ACTION_IMAGE_CAPTURE ব্যবহার করেন, তখন ক্যামেরাটি "data" নামের একটি অতিরিক্ত ক্ষেত্রে Bitmap হিসাবে সংরক্ষণ করা ফলাফলের Intent ফটোটির একটি ডাউনস্কেলযুক্ত অনুলিপি বা থাম্বনেইলও ফিরিয়ে দিতে পারে।

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

কোটলিন

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

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

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

জাভা

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

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

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        Bitmap thumbnail = data.getParcelableExtra("data");
        // Do other work with full size photo saved in locationForPhotos.
        ...
    }
}

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

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

কোটলিন

val REQUEST_IMAGE_CAPTURE = 1

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

জাভা

static final int REQUEST_IMAGE_CAPTURE = 1;

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

আউটপুট অবস্থানের জন্য কীভাবে উপযুক্ত Uri তৈরি করতে হয় তা সহ কোনও ফটো ক্যাপচারের জন্য এই অভিপ্রায়টি কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও তথ্যের জন্য, ফটো তুলুন বা ভিডিও নিন

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

 ...>
    
         android:name="android.media.action.IMAGE_CAPTURE" />
         android:name="android.intent.category.DEFAULT" />
    

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

স্টিল ইমেজ মোডে একটি ক্যামেরা অ্যাপ্লিকেশন শুরু করুন

গুগল ভয়েস ক্রিয়া

  • "একটি ছবি নিন"

স্টিল ইমেজ মোডে একটি ক্যামেরা অ্যাপ খুলতে, INTENT_ACTION_STILL_IMAGE_CAMERA ক্যামেরা অ্যাকশনটি ব্যবহার করুন।

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

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

কোটলিন

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

জাভা

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

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

 ...>
    
         android:name="android.media.action.STILL_IMAGE_CAMERA" />
         android:name="android.intent.category.DEFAULT" />
    

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

গুগল ভয়েস ক্রিয়া

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

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

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

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

কোটলিন

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

জাভা

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

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

 ...>
    
         android:name="android.media.action.VIDEO_CAMERA" />
         android:name="android.intent.category.DEFAULT" />
    

পরিচিতি/লোক অ্যাপ্লিকেশন

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

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

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

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

কীভাবে যোগাযোগের বিশদটি পুনরুদ্ধার করবেন সে সম্পর্কে তথ্যের জন্য একবার যোগাযোগের ইউআরআই হয়ে গেলে, কোনও যোগাযোগের জন্য বিশদটি পুনরুদ্ধার করুন

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

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

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

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

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

আপনার onActivityResult() কলব্যাকের কাছে বিতরণ করা ফলাফলের Intent content: ইউআরআই নির্বাচিত যোগাযোগের ডেটার দিকে নির্দেশ করে। প্রতিক্রিয়াটি আপনার অ্যাপ্লিকেশনটিকে সেই যোগাযোগের ডেটা পড়ার জন্য অস্থায়ী অনুমতি দেয় এমনকি যদি আপনার অ্যাপ্লিকেশনটি READ_CONTACTS অনুমতি অন্তর্ভুক্ত না করে।

অ্যাকশন
ACTION_PICK
ডেটা ইউআরআই স্কিম
কোনোটিই নয়
MIME প্রকার
CommonDataKinds.Phone.CONTENT_TYPE
একটি ফোন নম্বর সহ পরিচিতিগুলি থেকে চয়ন করুন।
CommonDataKinds.Email.CONTENT_TYPE
একটি ইমেল ঠিকানা সহ পরিচিতিগুলি থেকে চয়ন করুন।
CommonDataKinds.StructuredPostal.CONTENT_TYPE
একটি ডাক ঠিকানা সহ যোগাযোগ থেকে বাছাই করুন।

বা ContactsContract অধীনে অন্যান্য অনেক CONTENT_TYPE মানগুলির মধ্যে একটি।

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

কোটলিন

const val REQUEST_SELECT_PHONE_NUMBER = 1

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

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

জাভা

static final int REQUEST_SELECT_PHONE_NUMBER = 1;

public void selectContact() {
    // Start an activity for the user to pick a phone number from contacts.
    Intent intent = new Intent(Intent.ACTION_PICK);
    intent.setType(CommonDataKinds.Phone.CONTENT_TYPE);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(intent, REQUEST_SELECT_PHONE_NUMBER);
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_SELECT_PHONE_NUMBER && resultCode == RESULT_OK) {
        // Get the URI and query the content provider for the phone number.
        Uri contactUri = data.getData();
        String[] projection = new String[]{CommonDataKinds.Phone.NUMBER};
        Cursor cursor = getContentResolver().query(contactUri, projection,
                null, null, null);
        // If the cursor returned is valid, get the phone number.
        if (cursor != null && cursor.moveToFirst()) {
            int numberIndex = cursor.getColumnIndex(CommonDataKinds.Phone.NUMBER);
            String number = cursor.getString(numberIndex);
            // Do something with the phone number.
            //...
        }
    }
}

একটি যোগাযোগ দেখুন

একটি পরিচিত যোগাযোগের জন্য বিশদটি প্রদর্শন করতে, ACTION_VIEW অ্যাকশনটি ব্যবহার করুন এবং কোনও content: ইউআরআই অভিপ্রায় ডেটা হিসাবে।

প্রাথমিকভাবে যোগাযোগের ইউআরআই পুনরুদ্ধার করার দুটি প্রাথমিক উপায় রয়েছে:

  • পূর্ববর্তী বিভাগে প্রদর্শিত ACTION_PICK অ্যাকশন দ্বারা ফিরে আসা যোগাযোগটি ইউআরআই ব্যবহার করুন। এই পদ্ধতির কোনও অ্যাপ্লিকেশন অনুমতি প্রয়োজন হয় না।
  • পরিচিতিগুলির তালিকা পুনরুদ্ধার করতে বর্ণিত হিসাবে সমস্ত পরিচিতির তালিকা সরাসরি অ্যাক্সেস করুন। এই পদ্ধতির জন্য READ_CONTACTS অনুমতি প্রয়োজন।
অ্যাকশন
ACTION_VIEW
ডেটা ইউআরআই স্কিম
content:
MIME প্রকার
কোনোটিই নয়। প্রকারটি যোগাযোগের ইউআরআই থেকে অনুমান করা হয়।

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

কোটলিন

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

জাভা

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

একটি বিদ্যমান যোগাযোগ সম্পাদনা করুন

একটি পরিচিত যোগাযোগ সম্পাদনা করতে, ACTION_EDIT অ্যাকশনটি ব্যবহার করুন, কোনও content: ইউআরআই ইনটেন্ট ডেটা হিসাবে এবং ContactsContract.Intents.Insert ধ্রুবক দ্বারা নির্দিষ্ট অতিরিক্তগুলিতে কোনও পরিচিত যোগাযোগের তথ্য অন্তর্ভুক্ত করুন।

প্রাথমিকভাবে যোগাযোগটি ইউআরআই পুনরুদ্ধার করার দুটি প্রাথমিক উপায় রয়েছে:

  • পূর্ববর্তী বিভাগে প্রদর্শিত ACTION_PICK অ্যাকশন দ্বারা ফিরে আসা যোগাযোগটি ইউআরআই ব্যবহার করুন। এই পদ্ধতির কোনও অ্যাপ্লিকেশন অনুমতি প্রয়োজন হয় না।
  • পরিচিতিগুলির তালিকা পুনরুদ্ধার করতে বর্ণিত হিসাবে সমস্ত পরিচিতির তালিকা সরাসরি অ্যাক্সেস করুন। এই পদ্ধতির জন্য READ_CONTACTS অনুমতি প্রয়োজন।
অ্যাকশন
ACTION_EDIT
ডেটা ইউআরআই স্কিম
content:
MIME প্রকার
প্রকারটি যোগাযোগের ইউআরআই থেকে অনুমান করা হয়।
অতিরিক্ত
ContactsContract.Intents.Insert সংজ্ঞায়িত এক বা একাধিক অতিরিক্তগুলি যাতে আপনি যোগাযোগের বিশদগুলির ক্ষেত্রগুলি জনপ্রিয় করতে পারেন।

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

কোটলিন

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

জাভা

public void editContact(Uri contactUri, String email) {
    Intent intent = new Intent(Intent.ACTION_EDIT);
    intent.setData(contactUri);
    intent.putExtra(Intents.Insert.EMAIL, email);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

কোনও যোগাযোগ কীভাবে সম্পাদনা করবেন সে সম্পর্কে আরও তথ্যের জন্য, উদ্দেশ্যগুলি ব্যবহার করে যোগাযোগগুলি সংশোধন করুন।

একটি যোগাযোগ sert োকান

একটি নতুন পরিচিতি সন্নিবেশ করতে, ACTION_INSERT অ্যাকশনটি ব্যবহার করুন, Contacts.CONTENT_TYPE নির্দিষ্ট করুন Cont কনটেন্ট_ টাইপ মাইম টাইপ হিসাবে এবং ContactsContract.Intents.Insert ধ্রুবক দ্বারা নির্দিষ্ট অতিরিক্তগুলিতে কোনও পরিচিত যোগাযোগের তথ্য অন্তর্ভুক্ত করুন।

অ্যাকশন
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);
    }
}

কীভাবে কোনও যোগাযোগ সন্নিবেশ করবেন সে সম্পর্কে আরও তথ্যের জন্য, উদ্দেশ্যগুলি ব্যবহার করে যোগাযোগগুলি সংশোধন করুন।

ইমেইল

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

Al চ্ছিক সংযুক্তি সহ একটি ইমেল রচনা করুন

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

অ্যাকশন
ACTION_SENDTO (কোনও সংযুক্তির জন্য) বা
ACTION_SEND (একটি সংযুক্তির জন্য) বা
ACTION_SEND_MULTIPLE (একাধিক সংযুক্তির জন্য)
ডেটা ইউআরআই স্কিম
কোনোটিই নয়
MIME প্রকার
"text/plain"
"*/*"
অতিরিক্ত
Intent.EXTRA_EMAIL
সমস্ত "থেকে" প্রাপক ইমেল ঠিকানাগুলির একটি স্ট্রিং অ্যারে।
Intent.EXTRA_CC
সমস্ত "সিসি" প্রাপক ইমেল ঠিকানাগুলির একটি স্ট্রিং অ্যারে।
Intent.EXTRA_BCC
সমস্ত "বিসিসি" প্রাপক ইমেল ঠিকানাগুলির একটি স্ট্রিং অ্যারে।
Intent.EXTRA_SUBJECT
ইমেল বিষয় সহ একটি স্ট্রিং।
Intent.EXTRA_TEXT
ইমেলের শরীরের সাথে একটি স্ট্রিং।
Intent.EXTRA_STREAM
সংযুক্তির দিকে ইশারা করে একটি Uri । যদি ACTION_SEND_MULTIPLE অ্যাকশন ব্যবহার করে তবে এটি পরিবর্তে একাধিক Uri অবজেক্টযুক্ত একটি ArrayList

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

কোটলিন

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

জাভা

public void composeEmail(String[] addresses, String subject, Uri attachment) {
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("*/*");
    intent.putExtra(Intent.EXTRA_EMAIL, addresses);
    intent.putExtra(Intent.EXTRA_SUBJECT, subject);
    intent.putExtra(Intent.EXTRA_STREAM, attachment);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

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

কোটলিন

fun composeEmail(addresses: Array, subject: String) {
    val intent = Intent(Intent.ACTION_SENDTO).apply {
        data = Uri.parse("mailto:") // Only email apps handle this.
        putExtra(Intent.EXTRA_EMAIL, addresses)
        putExtra(Intent.EXTRA_SUBJECT, subject)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

জাভা

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

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

 ...>
    
         android:name="android.intent.action.SEND" />
         android:type="*/*" />
         android:name="android.intent.category.DEFAULT" />
    
    
         android:name="android.intent.action.SENDTO" />
         android:scheme="mailto" />
         android:name="android.intent.category.DEFAULT" />
    

ফাইল স্টোরেজ

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

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

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

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

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

অ্যান্ড্রয়েড 4.3 (এপিআই স্তর 18) এবং উচ্চতর, আপনি ব্যবহারকারীকে true সাথে সেট করে EXTRA_ALLOW_MULTIPLE যুক্ত করে একাধিক ফাইল নির্বাচন করতে পারেন। তারপরে আপনি getClipData() দ্বারা ফিরে আসা ClipData অবজেক্টে নির্বাচিত প্রতিটি ফাইল অ্যাক্সেস করতে পারেন।

অ্যাকশন
ACTION_GET_CONTENT
ডেটা ইউআরআই স্কিম
কোনোটিই নয়
MIME প্রকার
ব্যবহারকারীকে নির্বাচন করতে হবে এমন ফাইলের সাথে সম্পর্কিত মাইম টাইপ।
অতিরিক্ত
EXTRA_ALLOW_MULTIPLE
একটি বুলিয়ান যা ব্যবহারকারী একবারে একাধিক ফাইল নির্বাচন করতে পারে কিনা তা ঘোষণা করে।
EXTRA_LOCAL_ONLY
একটি বুলিয়ান যা ঘোষণা করে যে প্রত্যাবর্তিত ফাইলটি কোনও দূরবর্তী পরিষেবা থেকে ডাউনলোডের প্রয়োজনের চেয়ে সরাসরি ডিভাইস থেকে সরাসরি উপলব্ধ থাকতে হবে কিনা তা ঘোষণা করে।
বিভাগ (al চ্ছিক)
CATEGORY_OPENABLE
কেবলমাত্র "ওপেনেবল" ফাইলগুলি ফিরিয়ে দিতে যা openFileDescriptor() সহ ফাইল স্ট্রিম হিসাবে প্রতিনিধিত্ব করা যেতে পারে।

একটি ফটো পেতে অভিপ্রায় উদাহরণ:

কোটলিন

const val REQUEST_IMAGE_GET = 1

fun selectImage() {
    val intent = Intent(Intent.ACTION_GET_CONTENT).apply {
        type = "image/*"
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivityForResult(intent, REQUEST_IMAGE_GET)
    }
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    if (requestCode == REQUEST_IMAGE_GET && resultCode == Activity.RESULT_OK) {
        val thumbnail: Bitmap = data.getParcelableExtra("data")
        val fullPhotoUri: Uri = data.data
        // Do work with photo saved at fullPhotoUri.
        ...
    }
}

জাভা

static final int REQUEST_IMAGE_GET = 1;

public void selectImage() {
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("image/*");
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(intent, REQUEST_IMAGE_GET);
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_GET && resultCode == RESULT_OK) {
        Bitmap thumbnail = data.getParcelable("data");
        Uri fullPhotoUri = data.getData();
        // Do work with photo saved at fullPhotoUri.
        ...
    }
}

একটি ফটো ফিরিয়ে দিতে অভিপ্রায় ফিল্টার উদাহরণ:

 ...>
    
         android:name="android.intent.action.GET_CONTENT" />
         android:type="image/*" />
         android:name="android.intent.category.DEFAULT" />
        
         android:name="android.intent.category.OPENABLE" />
    

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

অ্যান্ড্রয়েড ৪.৪ বা তার বেশি উচ্চতর দিকে চলার সময় আপনি যখন ACTION_GET_CONTENT ACTION_OPEN_DOCUMENT অ্যাকশনটি ব্যবহার করে অন্য অ্যাপ্লিকেশন দ্বারা পরিচালিত একটি ফাইল খোলার জন্য অনুরোধ করতে পারেন এবং একটি এমআইএম টাইপ নির্দিষ্ট করে কোনও ফাইলের অনুলিপি পুনরুদ্ধার করার পরিবর্তে আপনার অ্যাপ্লিকেশনটিতে আপনাকে অবশ্যই আমদানি করতে হবে। ব্যবহারকারীকে এমন একটি নতুন ডকুমেন্ট তৈরি করতে দিন যা আপনার অ্যাপ্লিকেশনটি লিখতে পারে, পরিবর্তে ACTION_CREATE_DOCUMENT অ্যাকশনটি ব্যবহার করুন।

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

ACTION_GET_CONTENT অ্যাকশন থেকে আপনার onActivityResult() পদ্ধতিতে বিতরণ করা অভিপ্রায়টি যে কোনও ধরণের ইউআরআই ফিরিয়ে দিতে পারে, ফলাফলটি ACTION_OPEN_DOCUMENT এবং ACTION_CREATE_DOCUMENT থেকে সর্বদা নির্বাচিত ফাইলটিকে একটি content: ইউআরআই যা একটি DocumentsProvider দ্বারা সমর্থিত। আপনি openFileDescriptor() দিয়ে ফাইলটি খুলতে পারেন এবং DocumentsContract.Document থেকে কলামগুলি ব্যবহার করে এর বিশদটি অনুসন্ধান করতে পারেন।

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

আপনি true সেট করে ব্যবহারকারীকে EXTRA_ALLOW_MULTIPLE যুক্ত করে একাধিক ফাইল নির্বাচন করতে পারেন। যদি ব্যবহারকারী কেবল একটি আইটেম নির্বাচন করে তবে আপনি getData() থেকে আইটেমটি পুনরুদ্ধার করতে পারেন। যদি ব্যবহারকারী একাধিক আইটেম নির্বাচন করে, তবে getData() নাল ফিরে আসে এবং আপনাকে অবশ্যই প্রতিটি আইটেমকে ClipData অবজেক্ট থেকে পুনরুদ্ধার করতে হবে যা getClipData() দ্বারা ফিরে আসে।

দ্রষ্টব্য: আপনার অভিপ্রায় অবশ্যই একটি মাইম টাইপ নির্দিষ্ট করতে হবে এবং অবশ্যই CATEGORY_OPENABLE বিভাগটি ঘোষণা করতে হবে। যদি উপযুক্ত হয় তবে আপনি EXTRA_MIME_TYPES অতিরিক্তের সাথে মাইম প্রকারের একটি অ্যারে যুক্ত করে একাধিক মাইম টাইপ নির্দিষ্ট করতে পারেন - যদি আপনি এটি করেন তবে আপনাকে অবশ্যই "*/*"setType() এ প্রাথমিক মাইম টাইপ সেট করতে হবে।

অ্যাকশন
ACTION_OPEN_DOCUMENT বা
ACTION_CREATE_DOCUMENT
ডেটা ইউআরআই স্কিম
কোনোটিই নয়
MIME প্রকার
ব্যবহারকারীকে নির্বাচন করতে হবে এমন ফাইলের সাথে সম্পর্কিত মাইম টাইপ।
অতিরিক্ত
EXTRA_MIME_TYPES
আপনার অ্যাপ্লিকেশনটি অনুরোধ করছে এমন ফাইলগুলির সাথে সম্পর্কিত মাইম প্রকারের একটি অ্যারে। আপনি যখন এটি অতিরিক্ত ব্যবহার করেন, আপনাকে অবশ্যই "*/*"setType() এ প্রাথমিক মাইম প্রকারটি সেট করতে হবে।
EXTRA_ALLOW_MULTIPLE
একটি বুলিয়ান যা ব্যবহারকারী একবারে একাধিক ফাইল নির্বাচন করতে পারে কিনা তা ঘোষণা করে।
EXTRA_TITLE
প্রাথমিক ফাইলের নাম নির্দিষ্ট করতে ACTION_CREATE_DOCUMENT সাথে ব্যবহারের জন্য।
EXTRA_LOCAL_ONLY
একটি বুলিয়ান যা ঘোষণা করে যে প্রত্যাবর্তিত ফাইলটি কোনও দূরবর্তী পরিষেবা থেকে ডাউনলোডের প্রয়োজনের চেয়ে সরাসরি ডিভাইস থেকে সরাসরি উপলব্ধ থাকতে হবে কিনা তা ঘোষণা করে।
শ্রেণী
CATEGORY_OPENABLE
কেবলমাত্র "ওপেনেবল" ফাইলগুলি ফিরিয়ে দিতে যা openFileDescriptor() সহ ফাইল স্ট্রিম হিসাবে প্রতিনিধিত্ব করা যেতে পারে।

একটি ফটো পেতে অভিপ্রায় উদাহরণ:

কোটলিন

const val REQUEST_IMAGE_OPEN = 1

fun selectImage2() {
    val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
        type = "image/*"
        addCategory(Intent.CATEGORY_OPENABLE)
    }
    // Only the system receives the ACTION_OPEN_DOCUMENT, so no need to test.
    startActivityForResult(intent, REQUEST_IMAGE_OPEN)
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    if (requestCode == REQUEST_IMAGE_OPEN && resultCode == Activity.RESULT_OK) {
        val fullPhotoUri: Uri = data.data
        // Do work with full size photo saved at fullPhotoUri.
        ...
    }
}

জাভা

static final int REQUEST_IMAGE_OPEN = 1;

public void selectImage() {
    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
    intent.setType("image/*");
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    // Only the system receives the ACTION_OPEN_DOCUMENT, so no need to test.
    startActivityForResult(intent, REQUEST_IMAGE_OPEN);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_OPEN && resultCode == RESULT_OK) {
        Uri fullPhotoUri = data.getData();
        // Do work with full size photo saved at fullPhotoUri.
        ...
    }
}

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

এই ইউআইতে আপনার অ্যাপের ফাইলগুলি সরবরাহ করতে এবং অন্যান্য অ্যাপ্লিকেশনগুলিকে সেগুলি খুলতে দিন, আপনাকে অবশ্যই একটি DocumentsProvider প্রয়োগ করতে হবে এবং PROVIDER_INTERFACE ( "android.content.action.DOCUMENTS_PROVIDER" ) এর জন্য একটি অভিপ্রায় ফিল্টার অন্তর্ভুক্ত করতে হবে, নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

 ...
    android:grantUriPermissions="true"
    android:exported="true"
    android:permission="android.permission.MANAGE_DOCUMENTS">
    
         android:name="android.content.action.DOCUMENTS_PROVIDER" />
    

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

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

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

একটি গাড়ী কল

গুগল ভয়েস ক্রিয়া

  • "আমাকে একটি ট্যাক্সি পান"
  • "আমাকে গাড়ি বলুন"

(কেবল ওএস পরুন)

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

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

অ্যাকশন
ACTION_RESERVE_TAXI_RESERVATION
ডেটা URI
কোনোটিই নয়
MIME প্রকার
কোনোটিই নয়
অতিরিক্ত
কোনোটিই নয়

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

কোটলিন

fun callCar() {
    val intent = Intent(ReserveIntents.ACTION_RESERVE_TAXI_RESERVATION)
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

জাভা

public void callCar() {
    Intent intent = new Intent(ReserveIntents.ACTION_RESERVE_TAXI_RESERVATION);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

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

 ...>
    
         android:name="com.google.android.gms.actions.RESERVE_TAXI_RESERVATION" />
         android:name="android.intent.category.DEFAULT" />
    

মানচিত্র

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

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

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

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

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

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

উদাহরণ: "geo:47.6,-122.3?z=11"

geo:0,0?q=lat,lng(label)
স্ট্রিং লেবেল সহ প্রদত্ত দ্রাঘিমাংশ এবং অক্ষাংশে মানচিত্রটি দেখান।

উদাহরণ: "geo:0,0?q=34.99,-106.61(Treasure)"

geo:0,0?q=my+street+address
"আমার রাস্তার ঠিকানা" এর জন্য অবস্থানটি দেখান, যা একটি নির্দিষ্ট ঠিকানা বা অবস্থান ক্যোয়ারী হতে পারে।

উদাহরণ: "geo:0,0?q=1600+Amphitheatre+Parkway%2C+CA"

দ্রষ্টব্য: geo ইউআরআই -তে পাস করা সমস্ত স্ট্রিং অবশ্যই এনকোড করা উচিত। উদাহরণস্বরূপ, স্ট্রিং 1st & Pike, Seattle 1st%20%26%20Pike%2C%20Seattle হয়ে যায়। স্ট্রিংয়ের স্পেসগুলি %20 দিয়ে এনকোড করা হয় বা প্লাস সাইন ( + ) দিয়ে প্রতিস্থাপন করা হয়।

MIME প্রকার
কোনোটিই নয়

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

কোটলিন

fun showMap(geoLocation: Uri) {
    val intent = Intent(Intent.ACTION_VIEW).apply {
        data = geoLocation
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

জাভা

public void showMap(Uri geoLocation) {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(geoLocation);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

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

 ...>
    
         android:name="android.intent.action.VIEW" />
         android:scheme="geo" />
         android:name="android.intent.category.DEFAULT" />
    

সংগীত বা ভিডিও

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

একটি মিডিয়া ফাইল খেলুন

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

অ্যাকশন
ACTION_VIEW
ডেটা ইউআরআই স্কিম
file:
content:
http:
MIME প্রকার
"audio/*"
"application/ogg"
"application/x-ogg"
"application/itunes"
বা আপনার অ্যাপ্লিকেশনটির প্রয়োজন এমন অন্য কোনও।

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

কোটলিন

fun playMedia(file: Uri) {
    val intent = Intent(Intent.ACTION_VIEW).apply {
        data = file
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

জাভা

public void playMedia(Uri file) {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(file);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

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

 ...>
    
         android:name="android.intent.action.VIEW" />
         android:type="audio/*" />
         android:type="application/ogg" />
         android:name="android.intent.category.DEFAULT" />
    

একটি অনুসন্ধান ক্যোয়ারির উপর ভিত্তি করে সংগীত খেলুন

গুগল ভয়েস ক্রিয়া

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

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

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

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

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

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

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

অতিরিক্ত অতিরিক্ত:

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

অবরুদ্ধ - "vnd.android.cursor.item/*"

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

অতিরিক্ত অতিরিক্ত:

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

জেনার - 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);
    }
}

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

 ...>
    
         android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH" />
         android:name="android.intent.category.DEFAULT" />
    

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

কোটলিন

override fun onCreate(savedInstanceState: Bundle?) {
    ...
    if (intent.action.compareTo(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH) == 0) {

        val mediaFocus: String? = intent.getStringExtra(MediaStore.EXTRA_MEDIA_FOCUS)
        val query: String? = intent.getStringExtra(SearchManager.QUERY)

        // Some of these extras might not be available depending on the search mode.
        val album: String? = intent.getStringExtra(MediaStore.EXTRA_MEDIA_ALBUM)
        val artist: String? = intent.getStringExtra(MediaStore.EXTRA_MEDIA_ARTIST)
        val genre: String? = intent.getStringExtra("android.intent.extra.genre")
        val playlist: String? = intent.getStringExtra("android.intent.extra.playlist")
        val title: String? = intent.getStringExtra(MediaStore.EXTRA_MEDIA_TITLE)

        // Determine the search mode and use the corresponding extras.
        when {
            mediaFocus == null -> {
                // 'Unstructured' search mode (backward compatible)
                playUnstructuredSearch(query)
            }
            mediaFocus.compareTo("vnd.android.cursor.item/*") == 0 -> {
                if (query?.isNotEmpty() == true) {
                    // 'Unstructured' search mode.
                    playUnstructuredSearch(query)
                } else {
                    // 'Any' search mode.
                    playResumeLastPlaylist()
                }
            }
            mediaFocus.compareTo(MediaStore.Audio.Genres.ENTRY_CONTENT_TYPE) == 0 -> {
                // 'Genre' search mode.
                playGenre(genre)
            }
            mediaFocus.compareTo(MediaStore.Audio.Artists.ENTRY_CONTENT_TYPE) == 0 -> {
                // 'Artist' search mode.
                playArtist(artist, genre)
            }
            mediaFocus.compareTo(MediaStore.Audio.Albums.ENTRY_CONTENT_TYPE) == 0 -> {
                // 'Album' search mode.
                playAlbum(album, artist)
            }
            mediaFocus.compareTo("vnd.android.cursor.item/audio") == 0 -> {
                // 'Song' search mode.
                playSong(album, artist, genre, title)
            }
            mediaFocus.compareTo(MediaStore.Audio.Playlists.ENTRY_CONTENT_TYPE) == 0 -> {
                // 'Playlist' search mode.
                playPlaylist(album, artist, genre, playlist, title)
            }
        }
    }
}

জাভা

protected void onCreate(Bundle savedInstanceState) {
    //...
    Intent intent = this.getIntent();
    if (intent.getAction().compareTo(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH) == 0) {

        String mediaFocus = intent.getStringExtra(MediaStore.EXTRA_MEDIA_FOCUS);
        String query = intent.getStringExtra(SearchManager.QUERY);

        // Some of these extras might not be available depending on the search mode.
        String album = intent.getStringExtra(MediaStore.EXTRA_MEDIA_ALBUM);
        String artist = intent.getStringExtra(MediaStore.EXTRA_MEDIA_ARTIST);
        String genre = intent.getStringExtra("android.intent.extra.genre");
        String playlist = intent.getStringExtra("android.intent.extra.playlist");
        String title = intent.getStringExtra(MediaStore.EXTRA_MEDIA_TITLE);

        // Determine the search mode and use the corresponding extras.
        if (mediaFocus == null) {
            // 'Unstructured' search mode (backward compatible).
            playUnstructuredSearch(query);

        } else if (mediaFocus.compareTo("vnd.android.cursor.item/*") == 0) {
            if (query.isEmpty()) {
                // 'Any' search mode.
                playResumeLastPlaylist();
            } else {
                // 'Unstructured' search mode.
                playUnstructuredSearch(query);
            }

        } else if (mediaFocus.compareTo(MediaStore.Audio.Genres.ENTRY_CONTENT_TYPE) == 0) {
            // 'Genre' search mode.
            playGenre(genre);

        } else if (mediaFocus.compareTo(MediaStore.Audio.Artists.ENTRY_CONTENT_TYPE) == 0) {
            // 'Artist' search mode.
            playArtist(artist, genre);

        } else if (mediaFocus.compareTo(MediaStore.Audio.Albums.ENTRY_CONTENT_TYPE) == 0) {
            // 'Album' search mode.
            playAlbum(album, artist);

        } else if (mediaFocus.compareTo("vnd.android.cursor.item/audio") == 0) {
            // 'Song' search mode.
            playSong(album, artist, genre, title);

        } else if (mediaFocus.compareTo(MediaStore.Audio.Playlists.ENTRY_CONTENT_TYPE) == 0) {
            // 'Playlist' search mode.
            playPlaylist(album, artist, genre, playlist, title);
        }
    }
}

নতুন নোট

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

একটি নোট তৈরি করুন

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

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

অ্যাকশন
ACTION_CREATE_NOTE
ডেটা ইউআরআই স্কিম
কোনোটিই নয়
MIME প্রকার
PLAIN_TEXT_TYPE
"*/*"
অতিরিক্ত
EXTRA_NAME
একটি স্ট্রিং নোটের শিরোনাম বা বিষয় নির্দেশ করে।
EXTRA_TEXT
নোটের পাঠ্য নির্দেশ করে একটি স্ট্রিং।

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

কোটলিন

fun createNote(subject: String, text: String) {
    val intent = Intent(NoteIntents.ACTION_CREATE_NOTE).apply {
        putExtra(NoteIntents.EXTRA_NAME, subject)
        putExtra(NoteIntents.EXTRA_TEXT, text)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

জাভা

public void createNote(String subject, String text) {
    Intent intent = new Intent(NoteIntents.ACTION_CREATE_NOTE)
            .putExtra(NoteIntents.EXTRA_NAME, subject)
            .putExtra(NoteIntents.EXTRA_TEXT, text);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

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

 ...>
    
         android:name="com.google.android.gms.actions.CREATE_NOTE" />
         android:name="android.intent.category.DEFAULT" />
         android:mimeType="*/*" />
    

ফোন

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

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

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

গুগল ভয়েস ক্রিয়া

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

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

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

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

বৈধ টেলিফোন নম্বরগুলি আইইটিএফ আরএফসি 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);
    }
}

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

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

গুগল ভয়েস ক্রিয়া

  • "মাইভিডিওএপ -এ ক্যাট ভিডিওগুলির জন্য অনুসন্ধান করুন"

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

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

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

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

 android:name=".SearchActivity">
    
         android:name="com.google.android.gms.actions.SEARCH_ACTION"/>
         android:name="android.intent.category.DEFAULT"/>
    

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

একটি ওয়েব অনুসন্ধান শুরু করতে, 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);
    }
}

টেক্সট মেসেজিং

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

সংযুক্তি সহ একটি এসএমএস/এমএমএস বার্তা রচনা করুন

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

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

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

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

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

কোটলিন

fun composeMmsMessage(message: String, attachment: Uri) {
    val intent = Intent(Intent.ACTION_SENDTO).apply {
        type = HTTP.PLAIN_TEXT_TYPE
        putExtra("sms_body", message)
        putExtra(Intent.EXTRA_STREAM, attachment)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

জাভা

public void composeMmsMessage(String message, Uri attachment) {
    Intent intent = new Intent(Intent.ACTION_SENDTO);
    intent.setType(HTTP.PLAIN_TEXT_TYPE);
    intent.putExtra("sms_body", message);
    intent.putExtra(Intent.EXTRA_STREAM, attachment);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

আপনি যদি নিশ্চিত করতে চান যে আপনার অভিপ্রায়টি কেবল একটি পাঠ্য মেসেজিং অ্যাপ্লিকেশন দ্বারা পরিচালিত হয়েছে, এবং অন্য ইমেল বা সামাজিক অ্যাপ্লিকেশনগুলি নয়, তবে ACTION_SENDTO অ্যাকশনটি ব্যবহার করুন এবং নিম্নলিখিত উদাহরণে প্রদর্শিত "smsto:" ডেটা স্কিমটি অন্তর্ভুক্ত করুন:

কোটলিন

fun composeMmsMessage(message: String, attachment: Uri) {
    val intent = Intent(Intent.ACTION_SEND).apply {
        data = Uri.parse("smsto:")  // Only SMS apps respond to this.
        putExtra("sms_body", message)
        putExtra(Intent.EXTRA_STREAM, attachment)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

জাভা

public void composeMmsMessage(String message, Uri attachment) {
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setData(Uri.parse("smsto:"));  // Only SMS apps respond to this.
    intent.putExtra("sms_body", message);
    intent.putExtra(Intent.EXTRA_STREAM, attachment);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

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

 ...>
    
         android:name="android.intent.action.SEND" />
         android:type="text/plain" />
         android:type="image/*" />
         android:name="android.intent.category.DEFAULT" />
    

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

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

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

একটি ওয়েব ইউআরএল লোড করুন

গুগল ভয়েস ক্রিয়া

  • "ওপেন উদাহরণ ডটকম"

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

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

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

 ...>
    
         android:name="android.intent.action.VIEW" />
        
         android:scheme="http" android:host="www.example.com" />
         android:name="android.intent.category.DEFAULT" />
        
         android:name="android.intent.category.BROWSABLE" />
    

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

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

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

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

  1. বিকাশের জন্য একটি অ্যান্ড্রয়েড ডিভাইস সেট আপ করুন বা ভার্চুয়াল ডিভাইস ব্যবহার করুন।
  2. আপনার অ্যাপ্লিকেশনটির একটি সংস্করণ ইনস্টল করুন যা আপনি সমর্থন করতে চান এমন অভিপ্রায়গুলি পরিচালনা করে।
  3. adb ব্যবহার করে একটি অভিপ্রায় জ্বালান:
    adb shell am start -a  -t  -d  \
      -e   -n 
    

    যেমন:

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

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