Android startChooser()方法和startActivity()之间的差异
我是android新手,我注意到我可以通过两种方式分享我的意图 第一种方式:Android startChooser()方法和startActivity()之间的差异,android,android-intent,start-activity,Android,Android Intent,Start Activity,我是android新手,我注意到我可以通过两种方式分享我的意图 第一种方式: Intent shareIntent = ShareCompat.IntentBuilder.from(this) .setChooserTitle(title) .setType(mimeType)
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());
}
我建议您使用第二种方法,它可以让您更好地控制错误场景,并向用户提供有意义的信息