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