首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何取消从startActivityForResult调用的Intent

从Android 11开始,startActivityForResult方法已被弃用,推荐使用registerForActivityResult方法来处理Activity结果。下面是取消从startActivityForResult调用的Intent的步骤:

  1. 在调用startActivityForResult方法的Activity中,重写onActivityResult方法。这个方法会在子Activity结束后被调用,用于处理返回的结果。
  2. 在子Activity中,当需要取消Intent时,可以调用finish方法来结束当前Activity,并传递一个取消的结果码。
  3. 在调用startActivityForResult方法的Activity的onActivityResult方法中,根据返回的结果码判断是否为取消操作,如果是取消操作,则不做任何处理;如果是其他操作,则根据需要进行相应的处理。

以下是一个示例代码:

在调用startActivityForResult方法的Activity中:

代码语言:java
复制
private static final int REQUEST_CODE = 1;

// 启动子Activity
Intent intent = new Intent(this, ChildActivity.class);
startActivityForResult(intent, REQUEST_CODE);

// 处理子Activity返回的结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    
    if (requestCode == REQUEST_CODE) {
        if (resultCode == RESULT_CANCELED) {
            // 取消操作,不做任何处理
        } else {
            // 其他操作,根据需要进行处理
        }
    }
}

在子Activity中:

代码语言:java
复制
// 取消Intent操作
Intent intent = new Intent();
setResult(RESULT_CANCELED, intent);
finish();

这样,当子Activity调用finish方法结束时,会回调调用startActivityForResult方法的Activity的onActivityResult方法,并根据返回的结果码进行相应的处理。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Activity之间的通信

    代码分散,可读性差 封装不彻底,调用方需要到EditActivity才能知道需要传递什么参数,类型是什么,key是什么 调用方需要知道EditActivity是如何返回的参数类型和key是什么才能正确解析...我们期望的是: 一个对外提供某些功能的Activity应该有足够的封装性,调用者像调用普通方法一样,一行代码即可完成调用 方法的参数列表就是调用本服务需要传递的参数(参数数量,参数类型,是否必须) 方法的返回参数就是本服务的返回结果...那 editContent 方法内部是如何实现的呢?...class BaseSingleFragment : Fragment() { /** * 生成启动对应Activity的Intent,因为指定要启动的Activity,如何启动,传递参数...另外 Glide 3.X 版本对图片加载任务的启动,暂停,和取消和Activity的和生命周期绑定也是通过向FragmentManager中添加了一个隐藏的Fragment来实现的。

    1.1K10

    Android6.0动态权限适配&XMPermissions

    它还让用户可以对应用的功能进行更多控制;例如,用户可以选择为相机应用提供相机访问权限,而不提供设备位置的访问权限。用户可以随时进入应用的“Settings”屏幕调用权限。...:"+ getPackageName())); startActivityForResult(intent, REQUEST_CODE); } @Override protected void...getPackageName())); startActivityForResult(intent, REQUEST_CODE_WRITE_SETTINGS ); } @Override protected...,用户也无法在安装后动态取消这些normal权限,这和以前的权限系统是一样的,不变。...6.0以下返回:false 5、总是允许权限后再次调用:false 在APP使用过程中,从设置中更改权限 如果应用程序的某个业务逻辑需要使用权限,但用户没有选择开启。

    1.3K20

    【Android基础】利用Intent在Activity之间传递数据

    前言: 上一篇文章给大家聊了Intent的用法,如何用Intent启动Activity和隐式Intent,这一篇文章给大家聊聊如何利用Intent在Activity之间进行沟通。...注意:在调用startActivityForResult()时你可以利用显示Intent或者隐式Intent,但是在你能够利用显式Intent的时候尽量利用显式Intent,这样能够保证返回的结果是你期待的正确结果...之前调用startActivityForResult()方法,如果你在onResume之前调用了,那么所在的Activity就无法显示,直到启动的那个Activity退出然后返回结果,这是为了避免在重新定向到另外...Activity时窗口闪烁; 接收返回结果: 当startActivityForResult()启动的Activity完成任务退出时,系统会回调你调用Activity的onActivityResult...如果是你自己写的Intent作为返回结果你会很清楚,但是如果是调用的系统APP(相机,联系人等),那么Intent返回结果格式你应该清楚的知道。

    1.6K60

    再见!onActivityResult!你好,Activity Results API!

    背景 在Android应用程序开发中,启动一个Activity不一定是单项操作,从启动的Activity获取数据是常见的场景,最传统的方式是通过Intent携带数据,然后使用startActivityForResult...方法来启动下一个Activity,然后通过onActivityResult来接收返回的结果,代码如下: 调用startActivityForResult方法启动 startActivityForResult...} } 以上方式,onActivityResult就能获取从上一个界面返回的数据,这种方式非常有用,不仅能同一个应用中,也可以从其他应用中获取数据,比如我们常见的,调用系统相机、相册获取照片...(@SuppressLint("UnknownNullness") Intent intent, int requestCode) { super.startActivityForResult(intent...ActivityResultContract: 协议,它定义了如何传递数据和如何处理返回的数据。

    1.8K20

    再见!onActivityResult!你好,Activity Results API!

    背景 在Android应用程序开发中,启动一个Activity不一定是单项操作,从启动的Activity获取数据是常见的场景,最传统的方式是通过Intent携带数据,然后使用startActivityForResult...方法来启动下一个Activity,然后通过onActivityResult来接收返回的结果,代码如下: 调用startActivityForResult方法启动 startActivityForResult...} } 以上方式,onActivityResult就能获取从上一个界面返回的数据,这种方式非常有用,不仅能同一个应用中,也可以从其他应用中获取数据,比如我们常见的,调用系统相机、相册获取照片...(@SuppressLint("UnknownNullness") Intent intent, int requestCode) { super.startActivityForResult(intent...ActivityResultContract: 协议,它定义了如何传递数据和如何处理返回的数据。

    1.6K40

    Android:8.0中未知来源安装权限变更

    二、问题分析 查阅相关资料发现,Android8.0中对于APK的安装做了如下调整: 将 设置--安全 中的 允许安装未知来源应用 取消了(由于国内手机系统的高度定制,该选择项的位置有差异) 在安装 APK...具体示例代码如下: 下载逻辑省略,此处只列出 未知来源权限和安装 的处理逻辑 下面的逻辑实在 WelcomeActivity中实现的,所以,可以直接使用 startActivityForResult 并在...使用forResult是为了处理用户 取消 安装的事件。...外面这层判断理论上来说可以不要,但是由于国内的定制,这个加上还是比较保险的 startActivityForResult(intent, 2);...使用startActivityForResult 是为了在关闭设置界面之后,获取用户的操作结果,然后根据结果做其他处理 Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES

    3.6K30

    Activity Result API详解,是时候放弃startActivityForResult了

    所以我刚才说了,startActivityForResult()方法并没有什么致命的问题。 那么接下来我们学习一下如何使用Activity Result API来实现同样的功能。...registerForActivityResult()方法接收两个参数,第一个参数是一种Contract类型,由于我们是希望从另外一个Activity中请求数据,因此这里使用了StartActivityForResult...这样我们就不需要再调用startActivityForResult()方法了,而是直接调用launch()方法,并把Intent传入即可。 这两种写法到底孰优孰劣呢?...我想了一下,刚才在编写两个Activity之间交换数据的时候,我们需要显示地启动SecondActivity,并手动将SecondActivity返回的数据从Intent中解析出来,这就稍微有些麻烦。...但是我们在调用startActivityForResult()方法时,除了传入Intent之外,还需要再传入一个requestCode,用于在多个任务之间进行区分。

    1.9K30

    Activity Result API详解,是时候放弃startActivityForResult了「建议收藏」

    所以我刚才说了,startActivityForResult()方法并没有什么致命的问题。 那么接下来我们学习一下如何使用Activity Result API来实现同样的功能。...registerForActivityResult()方法接收两个参数,第一个参数是一种Contract类型,由于我们是希望从另外一个Activity中请求数据,因此这里使用了StartActivityForResult...这样我们就不需要再调用startActivityForResult()方法了,而是直接调用launch()方法,并把Intent传入即可。 这两种写法到底孰优孰劣呢?...我想了一下,刚才在编写两个Activity之间交换数据的时候,我们需要显示地启动SecondActivity,并手动将SecondActivity返回的数据从Intent中解析出来,这就稍微有些麻烦。...但是我们在调用startActivityForResult()方法时,除了传入Intent之外,还需要再传入一个requestCode,用于在多个任务之间进行区分。

    1.1K30

    如何取消网站备案 取消网站备案的流程

    当网站经营了一段时间以后,网站的经营者不想使用网站,想要将网站关停,而网站关停后需要取消网站备案,以此避免后续的相关问题。然而大多数的站主在关闭网站后,并不知道如何取消网站备案?...那么接下来就给大家介绍一下网站关停后如何取消备案的方法。 如何取消网站备案 当网站经营了一段时间以后,网站的经营者不想使用网站,想要将网站关停,而网站关停后需要取消网站备案,以此避免后续的相关问题。...然而大多数的站主在关闭网站后,并不知道如何取消网站备案?那么接下来就给大家介绍一下网站关停后如何取消备案的方法。 如何取消网站备案 如何取消网站备案?...取消网站备案的流程 在取消网站备案之前,首先要检查自己的网站是否备案,如果之前没有备案过,那么可以按照取消网站备案的正常流程进行取消,若是之前备案过,但是网站处于关闭无法打开的情况下,且主体下有且只有一个已经备案过的域名...以上就是关于如何取消网站备案的相关操作与流程。

    29.3K20
    领券