簡體   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