You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中onActivityResult重复调用及录屏权限授权异常问题

原因分析与解决方案

核心原因

你的CountDownTimer存在重复触发请求的逻辑:在onTick方法中手动调用了onFinish(),而CountDownTimer本身会在倒计时结束时自动执行onFinish(),这导致两次调用startActivityForResult发起录屏权限请求:

  • 第一次:倒计时剩余时间小于1100ms时,手动触发onFinish()发起请求;
  • 第二次:倒计时正常结束后,系统自动调用onFinish()再次发起请求。

当系统接收到第二次权限请求时,会自动取消第一次未完成的请求(对应日志中resultCode=0,即RESULT_CANCELED),你实际操作的是第二次请求,所以第二次返回resultCode=-1(即RESULT_OK),最终onActivityResult被调用两次。

修复方案

删除onTick方法中手动调用onFinish()的逻辑,让CountDownTimer自动在倒计时结束时执行onFinish(),修改后的onTick代码如下:

@SuppressLint("SetTextI18n")
@Override
public void onTick(long millisUntilFinished) {
    int second = (int) (millisUntilFinished / 1000);
    txtTesterCounter.setText(App.enToFa(second + ""));
}

修改后只会发起一次录屏权限请求,onActivityResult也只会被调用一次,且返回正确的结果码。


内容的提问来源于stack exchange,提问作者Dr.KeyOk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:55:25