[英]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.