首页
学习
活动
专区
工具
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() { /** * 生成启动对应ActivityIntent,因为指定要启动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

    再见!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

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

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

    1.5K60

    再见!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

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

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

    29.2K20

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

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

    1K30

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

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

    1.9K30

    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

    Android 蓝牙操作详解

    可以在该线程外写入连接流。这种连接是一个阻塞调用,由于蓝牙设备发现是一个缓慢过程,可能降低连接速率。所以,在连接其它设备之前要取消设备发现。      ...蓝牙套接字连接时阻塞调用,只在连接成功或者连接设备发生异常时才会返回。BluetoothConnection一经实例化,就会创建到其他设备连接,并开始监听来自连接设备数据。...连接                     try {                          // 这是一个阻塞调用,只在成功连接或者异常时返回                         ...          // 连接时保持监听InputStream           while (true) {                try {                     // 套接字流读取数据...这个实例通过调用蓝牙适配器上listenUsingRfcommWithServiceRecord()方法获得。有了这个实例我们可以通过start()方法开始监听来自远程设备入站请求。

    1.6K90
    领券