داده های ساده را به برنامه های دیگر ارسال کنید

اندروید از اینتنت‌ها و امکانات جانبی مرتبط با آنها استفاده می‌کند تا به کاربران اجازه دهد اطلاعات را به سرعت و به راحتی با استفاده از برنامه‌های مورد علاقه خود به اشتراک بگذارند.

اندروید دو راه برای کاربران جهت اشتراک‌گذاری داده‌ها بین برنامه‌ها فراهم می‌کند:

  • صفحه اشتراک‌گذاری اندروید (Android Sharesheet) در درجه اول برای ارسال محتوا به خارج از برنامه شما و/یا مستقیماً به کاربر دیگری طراحی شده است. برای مثال، اشتراک‌گذاری یک URL با یک دوست.
  • تحلیلگر intent اندروید (Android intent resolver) برای ارسال داده‌ها به مرحله بعدی یک وظیفه مشخص، مناسب‌ترین گزینه است. برای مثال، باز کردن یک فایل PDF از برنامه شما و اجازه دادن به کاربران برای انتخاب نمایشگر مورد نظر خود.

وقتی یک intent می‌سازید، عملی را که می‌خواهید intent انجام دهد، مشخص می‌کنید. اندروید از action ACTION_SEND برای ارسال داده‌ها از یک activity به activity دیگر، حتی فراتر از مرزهای فرآیند، استفاده می‌کند. شما باید داده‌ها و نوع آن را مشخص کنید. سیستم به طور خودکار activityهای سازگار را که می‌توانند داده‌ها را دریافت کنند شناسایی کرده و آنها را به کاربر نمایش می‌دهد. در مورد intent resolver، اگر فقط یک activity بتواند intent را مدیریت کند، آن activity بلافاصله شروع می‌شود.

چرا باید از اشتراک‌گذاری اندروید استفاده کنیم؟

ما اکیداً توصیه می‌کنیم از برگه اشتراک‌گذاری اندروید برای ایجاد هماهنگی بین کاربران خود در برنامه‌های مختلف استفاده کنید. فهرست اهداف اشتراک‌گذاری برنامه خود را نمایش ندهید یا انواع برگه اشتراک‌گذاری خودتان را ایجاد نکنید.

صفحه اشتراک‌گذاری اندروید به کاربران اجازه می‌دهد تا اطلاعات را با فرد مناسب به اشتراک بگذارند، به همراه پیشنهادهای برنامه‌های مرتبط، همه با یک لمس. صفحه اشتراک‌گذاری می‌تواند اهدافی را پیشنهاد دهد که برای راه‌حل‌های سفارشی در دسترس نیستند و از یک رتبه‌بندی ثابت استفاده می‌کند. دلیل این امر این است که صفحه اشتراک‌گذاری می‌تواند اطلاعات مربوط به برنامه و فعالیت کاربر را که فقط برای سیستم در دسترس است، در نظر بگیرد.

صفحه اشتراک‌گذاری اندروید همچنین ویژگی‌های مفید زیادی برای توسعه‌دهندگان دارد. برای مثال، می‌توانید موارد زیر را انجام دهید:

از اشتراک‌گذاری اندروید استفاده کنید

برای همه انواع اشتراک‌گذاری، یک intent ایجاد کنید و اکشن آن را روی Intent.ACTION_SEND تنظیم کنید. برای نمایش برگه اشتراک‌گذاری اندروید، Intent.createChooser() را فراخوانی کنید و شیء Intent خود را به آن منتقل کنید. این تابع نسخه‌ای از intent شما را برمی‌گرداند که همیشه برگه اشتراک‌گذاری اندروید را نمایش می‌دهد.

ارسال محتوای متنی

ساده‌ترین و رایج‌ترین کاربرد Sharesheet اندروید، ارسال محتوای متنی از یک activity به activity دیگر است. برای مثال، اکثر مرورگرها می‌توانند URL صفحه نمایش داده شده فعلی را به عنوان متن با برنامه دیگری به اشتراک بگذارند. این برای اشتراک‌گذاری یک مقاله یا وب‌سایت با دوستان از طریق ایمیل یا شبکه‌های اجتماعی مفید است. در اینجا مثالی از نحوه انجام این کار آورده شده است:

کاتلین

val sendIntent: Intent = Intent().apply {
    action = Intent.ACTION_SEND
    putExtra(Intent.EXTRA_TEXT, "This is my text to send.")
    type = "text/plain"
}

val shareIntent = Intent.createChooser(sendIntent, null)
startActivity(shareIntent)

جاوا

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");

Intent shareIntent = Intent.createChooser(sendIntent, null);
startActivity(shareIntent);

به صورت اختیاری، می‌توانید اطلاعات بیشتری مانند گیرندگان ایمیل ( EXTRA_EMAIL ، EXTRA_CC ، EXTRA_BCC )، موضوع ایمیل ( EXTRA_SUBJECT ) و غیره را اضافه کنید.

نکته: برخی از برنامه‌های ایمیل، مانند Gmail، برای موارد اضافی مانند EXTRA_EMAIL و EXTRA_CC ، انتظار String[] دارند. برای اضافه کردن این موارد به intent خود از putExtra(String, String[]) استفاده کنید.

ارسال محتوای دودویی

داده‌های دودویی را با استفاده از اکشن ACTION_SEND به اشتراک بگذارید. نوع MIME مناسب را تنظیم کنید و یک URI را در EXTRA_STREAM اضافی قرار دهید، همانطور که در مثال زیر نشان داده شده است. این معمولاً برای اشتراک‌گذاری یک تصویر استفاده می‌شود، اما می‌تواند برای اشتراک‌گذاری هر نوع محتوای دودویی نیز مورد استفاده قرار گیرد.

کاتلین

val shareIntent: Intent = Intent().apply {
    action = Intent.ACTION_SEND
    // Example: content://com.google.android.apps.photos.contentprovider/...
    putExtra(Intent.EXTRA_STREAM, uriToImage)
    type = "image/jpeg"
}
startActivity(Intent.createChooser(shareIntent, null))

جاوا

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
// Example: content://com.google.android.apps.photos.contentprovider/...
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
shareIntent.setType("image/jpeg");
startActivity(Intent.createChooser(shareIntent, null));

برنامه‌ی گیرنده برای دسترسی به داده‌هایی که Uri به آنها اشاره می‌کند، به مجوز نیاز دارد. دو روش توصیه شده برای انجام این کار وجود دارد:

  • داده‌ها را در ContentProvider خودتان ذخیره کنید و مطمئن شوید که سایر برنامه‌ها مجوز صحیح دسترسی به provider شما را دارند. مکانیزم ترجیحی برای ارائه دسترسی، استفاده از مجوزهای per-URI است که موقتی هستند و فقط به برنامه گیرنده دسترسی می‌دهند. یک راه آسان برای ایجاد یک ContentProvider مانند این، استفاده از کلاس کمکی FileProvider است.
  • از MediaStore سیستم استفاده کنید. MediaStore در درجه اول برای انواع MIME ویدیو، صدا و تصویر است. با این حال، از اندروید ۳.۰ (سطح API ۱۱)، می‌تواند انواع غیررسانه‌ای را نیز ذخیره کند. برای اطلاعات بیشتر، به MediaStore.Files مراجعه کنید. فایل‌ها را می‌توان با استفاده از scanFile() در MediaStore وارد کرد، پس از آن یک Uri با سبک content:// که برای اشتراک‌گذاری مناسب است به تابع onScanCompleted() ارائه شده ارسال می‌شود. توجه داشته باشید که پس از اضافه شدن به MediaStore سیستم، محتوا برای هر برنامه‌ای روی دستگاه قابل دسترسی است.

از نوع MIME مناسب استفاده کنید

خاص‌ترین نوع MIME موجود برای داده‌هایی که ارسال می‌کنید را ارائه دهید. برای مثال، هنگام اشتراک‌گذاری متن ساده text/plain استفاده کنید. در اینجا چند نوع MIME رایج هنگام ارسال داده‌های ساده در اندروید آورده شده است:

ثبت نام گیرندگان برای فرستنده‌ها ارسال می‌کنند
text/*
  • text/plain
  • text/rtf
  • text/html
  • text/json
`image/*`
  • image/jpg
  • image/png
  • image/gif
video/*
  • video/mp4
  • video/3gp
پسوندهای فایل پشتیبانی شده application/pdf

برای اطلاعات بیشتر در مورد انواع MIME، به رجیستری رسمی IANA از انواع رسانه MIME مراجعه کنید.

بسته به نوع MIME ارائه شده، ممکن است صفحه اشتراک‌گذاری اندروید پیش‌نمایشی از محتوا را نشان دهد. برخی از ویژگی‌های پیش‌نمایش فقط برای انواع خاصی در دسترس هستند.

چندین محتوا را به اشتراک بگذارید

برای اشتراک‌گذاری چندین محتوا، از اکشن ACTION_SEND_MULTIPLE به همراه فهرستی از URIهایی که به محتوا اشاره می‌کنند، استفاده کنید. نوع MIME بسته به ترکیبی از محتوایی که به اشتراک می‌گذارید، متفاوت است. برای مثال، اگر سه تصویر JPEG را به اشتراک می‌گذارید، از نوع "image/jpg" استفاده می‌کنید. برای ترکیبی از انواع تصویر، از "image/*" برای مطابقت با فعالیتی که هر نوع تصویری را مدیریت می‌کند، استفاده کنید. اگرچه اشتراک‌گذاری ترکیبی از انواع تصویر امکان‌پذیر است، اما ما اکیداً این کار را توصیه نمی‌کنیم، زیرا برای گیرنده مشخص نیست که چه چیزی قرار است ارسال شود. اگر ارسال چندین نوع ضروری است، از "*/*" استفاده کنید. تجزیه و پردازش داده‌های شما به برنامه گیرنده بستگی دارد. در اینجا مثالی آورده شده است:

کاتلین

val imageUris: ArrayList<Uri> = arrayListOf(
        // Add your image URIs here
        imageUri1,
        imageUri2
)

val shareIntent = Intent().apply {
    action = Intent.ACTION_SEND_MULTIPLE
    putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris)
    type = "image/*"
}
startActivity(Intent.createChooser(shareIntent, null))

جاوا

ArrayList<Uri> imageUris = new ArrayList<Uri>();
imageUris.add(imageUri1); // Add your image URIs here
imageUris.add(imageUri2);

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, null));

مطمئن شوید که اشیاء Uri ارائه شده به داده‌هایی اشاره می‌کنند که یک برنامه‌ی گیرنده می‌تواند به آنها دسترسی داشته باشد.

محتوای غنی را به پیش‌نمایش‌های متن اضافه کنید

از اندروید ۱۰ (سطح API ۲۹)، صفحه اشتراک‌گذاری اندروید پیش‌نمایشی از متن به اشتراک گذاشته شده را نشان می‌دهد. در برخی موارد، متنی که به اشتراک گذاشته می‌شود می‌تواند دشوار باشد. به اشتراک گذاشتن یک URL پیچیده مانند https://www.google.com/search?ei=2rRVXcLkJajM0PEPoLy7oA4 را در نظر بگیرید. یک پیش‌نمایش غنی‌تر می‌تواند به کاربران شما اطمینان دهد که چه چیزی به اشتراک گذاشته می‌شود.

اگر در حال پیش‌نمایش متن هستید، می‌توانید یک عنوان، یک تصویر کوچک یا هر دو را تنظیم کنید. قبل از فراخوانی Intent.createChooser() ، توضیحی به Intent.EXTRA_TITLE اضافه کنید و با استفاده از ClipData یک تصویر کوچک مرتبط اضافه کنید.

توجه: آدرس اینترنتی (URI) محتوای تصویر از یک FileProvider ، معمولاً از یک <cache-path> پیکربندی‌شده، ارائه می‌شود. برای اطلاعات بیشتر، به اشتراک‌گذاری فایل‌ها مراجعه کنید. حتماً به Sharesheet مجوزهای لازم را برای خواندن هر تصویری که می‌خواهید به عنوان تصویر کوچک استفاده کنید، بدهید. برای اطلاعات بیشتر، به Intent.FLAG_GRANT_READ_URI_PERMISSION مراجعه کنید.

در اینجا یک مثال آورده شده است:

کاتلین

 val share = Intent.createChooser(Intent().apply {
      action = Intent.ACTION_SEND
      putExtra(Intent.EXTRA_TEXT, "https://developer.android.com/training/sharing/")

      // (Optional) Here you're setting the title of the content
      putExtra(Intent.EXTRA_TITLE, "Introducing content previews")

      // (Optional) Here you're passing a content URI to an image to be displayed
      data = contentUri
      flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
  }, null)
  startActivity(share)

جاوا

Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "https://developer.android.com/training/sharing/");

// (Optional) Here you're setting the title of the content
sendIntent.putExtra(Intent.EXTRA_TITLE, "Introducing content previews");

// (Optional) Here you're passing a content URI to an image to be displayed
sendIntent.setData(contentUri);
sendIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

// Show the Sharesheet
startActivity(Intent.createChooser(sendIntent, null));

پیش‌نمایش چیزی شبیه به این است:

اقدامات سفارشی را به صفحه اشتراک اضافه کنید

تصویر از اقدامات سفارشی در صفحه اشتراک‌گذاری اندروید.

در اندروید ۱۴ (سطح API ۳۴) و بالاتر، برنامه‌ها می‌توانند اقدامات سفارشی را به صفحه اشتراک‌گذاری اندروید اضافه کنند. اقدامات سفارشی به صورت آیکون‌های کوچک در بالای صفحه اشتراک‌گذاری اندروید نمایش داده می‌شوند و برنامه‌ها می‌توانند هر Intent به عنوان عملی که هنگام کلیک روی آیکون فراخوانی می‌شود، مشخص کنند.

برای افزودن اقدامات سفارشی در صفحه اشتراک اندروید، ابتدا یک ChooserAction با ChooserAction.Builder ایجاد کنید. می‌توانید یک PendingIntent به عنوان عملی که هنگام کلیک روی آیکون فراخوانی می‌شود، مشخص کنید. یک آرایه شامل تمام اقدامات سفارشی خود ایجاد کنید و آن را به عنوان EXTRA_CHOOSER_CUSTOM_ACTIONS از Intent اشتراک‌گذاری مشخص کنید.

کاتلین

val sendIntent = Intent(Intent.ACTION_SEND)
    .setType("text/plain")
    .putExtra(Intent.EXTRA_TEXT, text)
val shareIntent = Intent.createChooser(sendIntent, null)
val customActions = arrayOf(
    ChooserAction.Builder(
        Icon.createWithResource(context, R.drawable.ic_custom_action),
        "Custom",
        PendingIntent.getBroadcast(
            context,
            1,
            Intent(Intent.ACTION_VIEW),
            PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_CANCEL_CURRENT
        )
    ).build()
)
shareIntent.putExtra(Intent.EXTRA_CHOOSER_CUSTOM_ACTIONS, customActions)
context.startActivity(shareIntent)

جاوا

Intent sendIntent = new Intent(Intent.ACTION_SEND)
        .setType("text.plain")
        .putExtra(Intent.EXTRA_TEXT, text);
Intent shareIntent = Intent.createChooser(sendIntent, null);
ChooserAction[] actions = new ChooserAction[]{
        new ChooserAction.Builder(
                Icon.createWithResource(context, R.drawable.ic_custom_action),
                "Custom",
                PendingIntent.getBroadcast(
                        context,
                        1,
                        new Intent(Intent.ACTION_VIEW),
                        PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_CANCEL_CURRENT
                )
        ).build()
};
shareIntent.putExtra(Intent.EXTRA_CHOOSER_CUSTOM_ACTIONS, actions);
context.startActivity(shareIntent);

اضافه کردن اهداف سفارشی

صفحه اشتراک‌گذاری اندروید به شما امکان می‌دهد تا دو شیء ChooserTarget مشخص کنید که قبل از میانبرهای اشتراک‌گذاری و اهداف انتخابگر بارگذاری‌شده از ChooserTargetServices نشان داده می‌شوند. همچنین می‌توانید تا دو intent که به فعالیت‌هایی اشاره می‌کنند را مشخص کنید که قبل از پیشنهادات برنامه فهرست شده‌اند:

پس از فراخوانی Intent.createChooser() Intent.EXTRA_CHOOSER_TARGETS و Intent.EXTRA_INITIAL_INTENTS را به Intent اشتراکی خود اضافه کنید:

کاتلین

val share = Intent.createChooser(myShareIntent, null).apply {
    putExtra(Intent.EXTRA_CHOOSER_TARGETS, myChooserTargetArray)
    putExtra(Intent.EXTRA_INITIAL_INTENTS, myInitialIntentArray)
}

جاوا

Intent shareIntent = Intent.createChooser(sendIntent, null);
share.putExtra(Intent.EXTRA_CHOOSER_TARGETS, myChooserTargetArray);
share.putExtra(Intent.EXTRA_INITIAL_INTENTS, myInitialIntentArray);

از این ویژگی با احتیاط استفاده کنید. هر Intent و ChooserTarget سفارشی که اضافه می‌کنید، تعداد پیشنهادی سیستم را کاهش می‌دهد. ما عموماً اضافه کردن اهداف سفارشی را توصیه نمی‌کنیم. یک مثال مناسب رایج برای اضافه کردن Intent.EXTRA_INITIAL_INTENTS ، ارائه اقدامات اضافی است که کاربران می‌توانند در محتوای اشتراکی انجام دهند. به عنوان مثال، یک کاربر تصاویر را به اشتراک می‌گذارد و Intent.EXTRA_INITIAL_INTENTS برای ارسال لینک به جای آن استفاده می‌شود. یک مثال مناسب رایج برای اضافه کردن Intent.EXTRA_CHOOSER_TARGETS ، نمایش افراد یا دستگاه‌های مرتبطی است که برنامه شما ارائه می‌دهد.

اهداف خاص را بر اساس جزء مستثنی کنید

شما می‌توانید با ارائه Intent.EXTRA_EXCLUDE_COMPONENTS اهداف خاصی را حذف کنید. این کار را فقط برای حذف اهدافی که روی آنها کنترل دارید انجام دهید. یک مورد استفاده رایج، پنهان کردن اهداف اشتراک‌گذاری برنامه شما هنگام اشتراک‌گذاری کاربران از داخل برنامه شماست، زیرا احتمالاً هدف آنها خارج از برنامه شما به اشتراک گذاشته می‌شود.

بعد از فراخوانی Intent.createChooser() Intent.EXTRA_EXCLUDE_COMPONENTS به intent خود اضافه کنید:

کاتلین

  val share = Intent.createChooser(Intent(), null).apply {
    // Only use for components you have control over
    val excludedComponentNames = arrayOf(ComponentName("com.example.android", "ExampleClass"))
    putExtra(Intent.EXTRA_EXCLUDE_COMPONENTS, excludedComponentNames)
  }

جاوا

  Intent shareIntent = Intent.createChooser(new Intent(), null);
  // Only use for components you have control over
  ComponentName[] excludedComponentNames = {
          new ComponentName("com.example.android", "ExampleClass")
  };
  shareIntent.putExtra(Intent.EXTRA_EXCLUDE_COMPONENTS, excludedComponentNames);

دریافت اطلاعات در مورد اشتراک گذاری

دانستن اینکه کاربران شما چه زمانی اشتراک‌گذاری می‌کنند و چه هدفی را انتخاب می‌کنند، می‌تواند مفید باشد. برگه اشتراک‌گذاری اندروید (Android Sharesheet) با ارائه ComponentName اهدافی که کاربران شما با استفاده از IntentSender انتخاب می‌کنند، به شما امکان می‌دهد این اطلاعات را دریافت کنید.

ابتدا یک PendingIntent برای BroadcastReceiver ایجاد کنید و IntentSender آن را در Intent.createChooser() قرار دهید:

کاتلین

var share = Intent(Intent.ACTION_SEND)
// ...
val pi = PendingIntent.getBroadcast(
    myContext, requestCode,
    Intent(myContext, MyBroadcastReceiver::class.java),
    PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
)
share = Intent.createChooser(share, null, pi.intentSender)

جاوا

Intent share = new Intent(ACTION_SEND);
...
PendingIntent pi = PendingIntent.getBroadcast(myContext, requestCode,
        new Intent(myContext, MyBroadcastReceiver.class),
        PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
share = Intent.createChooser(share, null, pi.getIntentSender());

تابع فراخوانی را در MyBroadcastReceiver دریافت کنید و به Intent.EXTRA_CHOOSER_RESULT نگاه کنید:

کاتلین

override fun onReceive(context: Context, intent: Intent) {
  ...
  val chooserResult: ChooserResult? = IntentCompat.getParcelableExtra(
      intent,
      Intent.EXTRA_CHOOSER_RESULT,
      ChooserResult::class.java,
  )
  chooserResult?.let {
      Log.i(
          TAG,
          "Share callback: isShortcut: ${it.isShortcut}, type: ${typeToString(it.type)}, componentName: ${it.selectedComponent}",
      )
  } ?: Log.i(TAG, "chooserResult is null")
}

جاوا

@Override public void onReceive(Context context, Intent intent) {
  ...
  ChooserResult chooserResult = intent.getParcelableExtra(EXTRA_CHOOSER_RESULT); 
  Log.i(
      TAG,
      "Share callback: isShortcut: "
          + chooserResult.isShortcut()
          + ", type: "
          + chooserResult.getType()
          + ", componentName: "
          + chooserResult.getSelectedComponent()
  );
}
برای اطلاعات بیشتر به نمونه اشتراک‌گذاری پلتفرم مراجعه کنید:

اقدامات سفارشی را به صفحه اشتراک اضافه کنید

در اندروید ۱۴ (API Level 34) و بالاتر، برنامه‌ها می‌توانند اکشن‌های سفارشی را به صفحه اشتراک‌گذاری اندروید اضافه کنند. با استفاده از ChooserAction.Builder یک ChooserAction ایجاد کنید. می‌توانید یک PendingIntent به عنوان اکشنی که هنگام کلیک روی آیکون فراخوانی می‌شود، مشخص کنید. یک آرایه شامل تمام اکشن‌های سفارشی خود ایجاد کنید و آن را به عنوان EXTRA_CHOOSER_CUSTOM_ACTIONS از Share Intent مشخص کنید.

کاتلین

val sendIntent = Intent(Intent.ACTION_SEND)
    .setType("text/plain")
    .putExtra(Intent.EXTRA_TEXT, text)
val shareIntent = Intent.createChooser(sendIntent, null)
val customActions = arrayOf(
    ChooserAction.Builder(
        Icon.createWithResource(context, R.drawable.ic_custom_action),
        "Custom",
        PendingIntent.getBroadcast(
            context,
            1,
            Intent(Intent.ACTION_VIEW),
            PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_CANCEL_CURRENT
        )
    ).build()
)
shareIntent.putExtra(Intent.EXTRA_CHOOSER_CUSTOM_ACTIONS, customActions)
context.startActivity(shareIntent)

جاوا

Intent sendIntent = new Intent(Intent.ACTION_SEND)
        .setType("text.plain")
        .putExtra(Intent.EXTRA_TEXT, text);
Intent shareIntent = Intent.createChooser(sendIntent, null);
ChooserAction[] actions = new ChooserAction[]{
        new ChooserAction.Builder(
                Icon.createWithResource(context, R.drawable.ic_custom_action),
                "Custom",
                PendingIntent.getBroadcast(
                        context,
                        1,
                        new Intent(Intent.ACTION_VIEW),
                        PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_CANCEL_CURRENT
                )
        ).build()
};
shareIntent.putExtra(Intent.EXTRA_CHOOSER_CUSTOM_ACTIONS, actions);
context.startActivity(shareIntent);

از حل‌کننده‌ی هدف اندروید استفاده کنید

تصویری از تحلیلگر قصد ACTION_SEND .

بهترین زمان استفاده از تحلیلگر intent اندروید، زمانی است که داده‌ها به عنوان بخشی از یک جریان کاری مشخص به برنامه دیگری ارسال می‌شوند.

برای استفاده از تحلیلگر intent اندروید، یک intent ایجاد کنید و موارد اضافی را مانند فراخوانی برگه اشتراک اندروید اضافه کنید. با این حال، Intent.createChooser() فراخوانی نکنید .

اگر چندین برنامه نصب شده با فیلترهایی که با ACTION_SEND و نوع MIME مطابقت دارند، وجود داشته باشد، سیستم یک کادر محاوره‌ای ابهام‌زدایی به نام intent resolver نمایش می‌دهد که به کاربر اجازه می‌دهد هدفی را برای اشتراک‌گذاری انتخاب کند. اگر فقط یک برنامه مطابقت داشته باشد، اجرا می‌شود.

در اینجا مثالی از نحوه استفاده از تحلیلگر intent اندروید برای ارسال متن آورده شده است:

کاتلین

val sendIntent: Intent = Intent().apply {
    action = Intent.ACTION_SEND
    putExtra(Intent.EXTRA_TEXT, "This is my text to send.")
    type = "text/plain"
}
startActivity(sendIntent)

جاوا

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(sendIntent);

بیشتر بدانید

برای اطلاعات بیشتر در مورد ارسال داده، به Intents و Intent Filters مراجعه کنید.