Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android startChooser()方法和startActivity()之间的差异_Android_Android Intent_Start Activity - Fatal编程技术网

Android startChooser()方法和startActivity()之间的差异

Android startChooser()方法和startActivity()之间的差异,android,android-intent,start-activity,Android,Android Intent,Start Activity,我是android新手,我注意到我可以通过两种方式分享我的意图 第一种方式: Intent shareIntent = ShareCompat.IntentBuilder.from(this) .setChooserTitle(title) .setType(mimeType)

我是android新手,我注意到我可以通过两种方式分享我的意图

第一种方式:

Intent shareIntent =   ShareCompat.IntentBuilder.from(this)
                                                .setChooserTitle(title)
                                                .setType(mimeType)
                                                .setText(text)
                                                .getIntent();
    if (shareIntent.resolveActivity(getPackageManager()) != null){
        startActivity(shareIntent);
    }
ShareCompat.IntentBuilder.from(此)。
setType(mimeType)。
设置选择器标题(标题)。
setText(文本)。
startChooser()

第二种方法是:

Intent shareIntent =   ShareCompat.IntentBuilder.from(this)
                                                .setChooserTitle(title)
                                                .setType(mimeType)
                                                .setText(text)
                                                .getIntent();
    if (shareIntent.resolveActivity(getPackageManager()) != null){
        startActivity(shareIntent);
    }
我的问题是,使用
startChooser()
是否可以避免我在第二种方法中使用的检查。。这两个功能之间还有其他区别吗

第一种方式:

在这里,您给出了框架的意图,但不知道设备中是否有任何应用程序可用于处理该意图

第二种方式:

首先要确保设备中至少有一个应用程序可以处理该意图

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

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

没有

IntentBuilder基本上是一个帮助类,用于构建共享意图(
Intent\ACTION\u SEND
Intent\ACTION\u SEND\u MULTIPLE
)和启动共享内容的活动

这两个功能之间还有其他区别吗

在发动机罩下,
startChooser()
和startActivity()执行相同的操作
startChooser()
只需包装
startActivity()
。查看
startChooser()
的定义:

/**
*为当前共享目的启动选择器活动。
*
*请注意,在大多数情况下,您应该使用
*{@link ShareCompat#配置MenuItem(MenuItem,IntentBuilder)
*ShareCompat.configureMenuItem()}将共享项添加到菜单,同时
*显示要共享的内容的详细视图
*直接调用这个

*/ 公共无效startChooser(){ mActivity.startActivity(createchooserecontent()); }
我建议您使用第二种方法,它可以让您更好地控制错误场景,并向用户提供有意义的信息