【问题标题】:Difference between startChooser() method and startActivity()startChooser() 方法和 startActivity() 的区别
【发布时间】:2018-07-05 09:48:06
【问题描述】:

我是 android 新手,我注意到我可以通过 2 种方式共享意图。

第一种方式:

ShareCompat.IntentBuilder.from(this). setType(mimeType). setChooserTitle(title). setText(text). startChooser();

第二种方式是:

Intent shareIntent =   ShareCompat.IntentBuilder.from(this)
                                                .setChooserTitle(title)
                                                .setType(mimeType)
                                                .setText(text)
                                                .getIntent();
    if (shareIntent.resolveActivity(getPackageManager()) != null){
        startActivity(shareIntent);
    }

我的问题是,使用startChooser() 是否可以让我免于以第二种方式使用的支票? ..这两个功能还有其他区别吗?

【问题讨论】:

    标签: android android-intent start-activity


    【解决方案1】:

    使用startChooser() 是否可以让我免于检查我在 第二个?

    没有。

    IntentBuilder 基本上是一个帮助类,用于构建共享意图(Intent#ACTION_SENDIntent#ACTION_SEND_MULTIPLE)并启动活动以共享内容。

    这两个函数还有其他区别吗

    在后台,startChooser() 和 startActivity() 执行相同的操作。 startChooser() 只是包装 startActivity()。查看startChooser()的定义:

        /**
         * Start a chooser activity for the current share intent.
         *
         * <p>Note that under most circumstances you should use
         * {@link ShareCompat#configureMenuItem(MenuItem, IntentBuilder)
         *  ShareCompat.configureMenuItem()} to add a Share item to the menu while
         * presenting a detail view of the content to be shared instead
         * of invoking this directly.</p>
         */
         public void startChooser() {
            mActivity.startActivity(createChooserIntent());
         }
    

    我建议您使用第二种方法,它可以让您更好地控制您可以处理错误情况并向用户提供有意义的信息。

    【讨论】:

      【解决方案2】:

      第一种方式:

      在这里,您将 Intent 提供给框架,但您不知道设备中是否有任何应用程序可用于处理该 Intent。

      第二种方式:

      您首先确保设备中至​​少有一个可以处理 Intent 的应用程序。

      在第二种方式中,您可以在不将该意图传递给框架的情况下处理意外流量。就像您可以通知用户“没有可用于处理该操作的应用程序”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-16
        • 1970-01-01
        • 1970-01-01
        • 2011-11-10
        • 1970-01-01
        • 2016-01-31
        • 2013-06-12
        • 1970-01-01
        相关资源
        最近更新 更多