当用户取消意图选择器时是不是有事件?

Posted

技术标签:

【中文标题】当用户取消意图选择器时是不是有事件?【英文标题】:Is there an event when user cancels intent chooser?当用户取消意图选择器时是否有事件? 【发布时间】:2016-11-06 23:39:14 【问题描述】:

在我的 android 应用程序中,我希望用户选择,如果有多个可能的应用程序,应该使用哪个其他应用程序来显示某个图像。因此我得到以下代码:

final Intent intent = new Intent(Intent.ACTION_VIEW)
                       .setDataAndType(uri, IMAGE_MIME_TYPE)
                       .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_NO_HISTORY);

 context.startActivity(intent);

按照意图显示应用选择器。

就在我打电话给startActivity 之前,我打开了一个ProgressDialog,例如当用户通过后退按钮取消应用程序选择器时,我想关闭它。确定应用选择器已取消的最佳方法是什么?换句话说 - 我应该在哪里关闭我的ProgressDialog

【问题讨论】:

可能有更好的解决方案,但正如你所说,你可以检查它的后退按钮。虽然可能不是取消它的唯一方法 我认为这可能是一个错字 - 但您将您的 Intent 命名为 intent 并打开 viewIntent。也许将其更改为正确的变量。 :) 感谢您指出这一点 - 是一个错字:) 【参考方案1】:

开始这样的活动:

 context.startActivityForResult(viewIntent, <int flag>);

然后在onActivityResult():

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    // Check which request we're responding to
    if (requestCode == <int flag>) 
        // Make sure the request was successful
        if (resultCode == RESULT_OK) 
            // The user pressed ok
        else
            // The user pressed cancel 
        
    

【讨论】:

当这样尝试时,onActivityResultstartActivityForResult 之后立即被调用,结果代码为 0 RESULT_CANCELED,甚至在我实际取消意图选择器之前 发生这种情况是因为Intent.FLAG_ACTIVITY_NEW_TASK 标志 @JigneshAnsodariya 但是当我按下确定时。它不会触发 toast 消息。但是,取消显示吐司为什么?

以上是关于当用户取消意图选择器时是不是有事件?的主要内容,如果未能解决你的问题,请参考以下文章

使用联系人选择器时从具有多个号码的用户中选择一个号码

选择步进器时滚动视图重叠

jQuery:当 jQuery 对象找不到指定的类选择器时,jQuery 会返回啥? [复制]

android意图选择器出现缓慢

组件选择器不是已知元素

Whatsapp喜欢通过短信实现邀请,只是短信,而不是通过意图选择器