繁体   English   中英

如何在 Android 中使用 onActivityResult

[英]How to use onActivityResult in Android

在我的应用程序中,我想在 Activity 中使用onActivityResult ,为此我编写了以下代码。
但是在调用onActivityResult后显示了2 次日志并显示错误结果!
我使用MediaProjectionManager并单击允许权限,但为什么显示取消请求代码?
我的代码:

    private CountDownTimer reverseTimer() {
        return countDownTimer = new CountDownTimer(2 * 1000, 1000) {
            @SuppressLint("SetTextI18n")
            @Override
            public void onTick(long millisUntilFinished) {
                int second = (int) (millisUntilFinished / 1000);
                if (millisUntilFinished < 1100) {
                    onFinish();
                } else {
                    txtTesterCounter.setText(App.enToFa(second + ""));
                }
            }

            @Override
            public void onFinish() {
            MediaProjectionManager mediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
                Intent permissionIntent = mediaProjectionManager != null ? mediaProjectionManager.createScreenCaptureIntent() : null;
                startActivityForResult(permissionIntent, ConstKeys.SCREEN_RECORD_REQUEST_CODE);
                Log.e("ResultLog", "Request : " + ConstKeys.SCREEN_RECORD_REQUEST_CODE);
            }
        };
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //The user has denied permission for screen mirroring. Let's notify the user
        Log.e("ResultLog", "Request : " + resultCode + "---" + "Request : " + requestCode);
        if (resultCode == RESULT_CANCELED && requestCode == ConstKeys.SCREEN_RECORD_REQUEST_CODE) {
            Toast.makeText(this, "Access failed!", Toast.LENGTH_SHORT).show();
            finish();
            return;
        }
}

Logcat 消息:

2022-09-21 19:16:46.948 10083-10083/com.myapp E/ResultLog: Request : 1003
2022-09-21 19:16:47.908 10083-10083/com.myapp E/ResultLog: Request : 1003
2022-09-21 19:16:48.276 10083-10083/com.myapp E/ResultLog: Request : 0---Request : 1003
2022-09-21 19:16:48.349 10083-10083/com.myapp E/ResultLog: Request : -1---Request : 1003

为什么调用日志代码 2 次并且不允许权限?

不要自己调用onFinish()

它会在...全部完成时自动调用..

它在您的条件返回 true 时第一次调用它,第二次在它自己实际完成时调用它,这意味着当您的条件为 true 时计时器不会被停止或取消,以便在您需要在onFinish();下停止计时器时调用它onFinish(); 方法有一个名为cancel()的方法来停止计时器尝试在您的情况下使用您的 object 名称为countDownTimer所以它应该看起来像countDownTimer.cancel()下的onFinish()

让我知道这是否解决了问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM