builder = new AlertDialog.Builder(getApplicationContext());
builder.setTitle("请拔掉U盘,点击重启!");
builder.setPositiveButton("重启", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ArrayList<String> commandList = new ArrayList<>();
commandList.add("echo --update_package=/cache/recovery/update.zip >
/cache/recovery/command");
commandList.add("reboot recovery");
ExecuteAsRoot executeAsRoot = new ExecuteAsRoot(commandList);
executeAsRoot.execute();
}
});
final AlertDialog dialog = builder.create();
//在dialog show方法之前添加如下代码,表示该dialog是一个系统的dialog
//dialog.getWindow().setType((WindowManager.LayoutParams.TYPE_SYSTEM_ALERT));
if (Build.VERSION.SDK_INT>=26) {//8.0新特性
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
}else{
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
}
new Thread(){
public void run() {
SystemClock.sleep(4000);
hanlder.post(new Runnable() {
@Override
public void run() {
dialog.show();
}
});
};
}.start();
参考: