如何使Intent.createChooser()
创建的对话框取消?换句话说:当我在之外敲击此对话框时,我需要取消它。
默认情况下它是这样工作的。但是在某些设备(例如三星GT2)上不是(只能通过按back
按钮来取消此对话框)。
注意我在谈论Intent.createChooser()
创建的对话框。我没有提及Dialog
本身。
我同意YUL - 这是不可能的,除非创建自己的选择者。queryIntentActivities()
可以为您提供列表的内容,并且您可以根据需要设计对话框。这是一个使用queryIntentActivities()
的示例项目来填充所有LAUNCHER
活动的ListView
,然后使用该数据启动ClickEded-Upon条目。
就个人而言,由于大多数设备已经具有这种行为,所以我不会打扰。自从原始设备以来,我一直在使用Android,并且我没有意识到该对话框可以通过其他来取消,而不是对话框的取消按钮(在较旧的设备上)和后退按钮,直到阅读您的问题。我怀疑您的用户群会介意您的应用程序与设备上的所有其他应用程序相同。
如果您使用startActivityForResult
进行此操作,则可以获取resultCode
并测试以查看是否是RESULT_CANCELED
。
在培训文档中有更多信息,以获取活动的结果和活动本身的文档。
虽然从上述文档中无耻地借用示例,但我将向您展示如何做:
static final int PICK_CONTACT_REQUEST = 1;
private void pickContact() {
Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));
pickContactIntent.setType(Phone.CONTENT_TYPE);
startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
...
} else if (resultCode == RESULT_CANCELED){
...
}
}