【发布时间】:2019-03-24 19:18:35
【问题描述】:
我正在制作一个应用程序,其中在某些任务在后台运行时显示进度对话框。我想在后台任务启动并显示进度对话框时禁用硬件主页按钮,并在任务完成和进度对话框完成时再次启用它,这样该任务就不会被中断。我试过使用 startLockTask() 和 stopLockTask();但它总是请求许可,并且它不适用于低于 21 的 api。 我尝试了以下答案,但没有帮助。
How to disable Home and other system buttons in Android?
https://stackoverflow.com/a/23349558/2579281
我知道很久以前就有人问过这个问题。如果有人有新的方法来做到这一点,请帮助
class MyTaskRunner extends AsyncTask<String, String, String> {
private String resp;
ProgressDialog progressDialog;
@Override
protected String doInBackground(String... params) {
publishProgress("Sleeping..."); // Calls onProgressUpdate()
try {
int time = Integer.parseInt(params[0])*1000;
Thread.sleep(time);
resp = "Slept for " + params[0] + " seconds";
} catch (InterruptedException e) {
e.printStackTrace();
resp = e.getMessage();
} catch (Exception e) {
e.printStackTrace();
resp = e.getMessage();
}
return resp;
}
@Override
protected void onPostExecute(String result) {
// execution of result of Long time consuming operation
progressDialog.dismiss();
//enable home button here
//stopLockTask();
}
@Override
protected void onPreExecute() {
progressDialog = ProgressDialog.show(MainActivity.this,
"ProgressDialog","Wait..");
//disable home button here
//startLockTask();
}
@Override
protected void onProgressUpdate(String... text) {
finalResult.setText(text[0]);
}
}
【问题讨论】:
-
@zombie 我已经提到我已经看到了那个答案,但这并没有帮助,很久以前就有人问过