如何在不重启设备的情况下在源代码中重新启动SystemUI?
我试图在不重启的情况下切换系统字体,除了SystemUI外,一切正常。我想立即重启SystemUI而不是重启设备。
感谢~~~
答案 0 :(得分:1)
从您想要其他UI的方法中调用以下方法
private void restartSelf() {
AlarmManager am = (AlarmManager)getActivity().getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis() + 500, // one second
PendingIntent.getActivity(getActivity(), 0, getActivity().getIntent(), PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_CANCEL_CURRENT));
Intent i = getActivity().getBaseContext().getPackageManager().getLaunchIntentForPackage(getActivity().getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
答案 1 :(得分:1)
需要root访问权限,但您可以通过以下方法重新启动System UI:
private void restartSystemUi() {
Process process = null;
try {
process = Runtime.getRuntime().exec("su");
} catch (IOException e) {
Log.e(TAG, "Error retrieving process", e);
}
if (process != null ){
try {
DataOutputStream os = new DataOutputStream(process.getOutputStream());
os.writeBytes("pkill com.android.systemui\n");
os.flush();
os.writeBytes("exit\n");
os.flush();
process.waitFor();
} catch (Exception e) {
Log.e(TAG, "Error killing system UI", e);
}
}
}
与任何root操作一样,您的里程可能会有所不同。没有root就不可能,所以这个(或类似的特权滥用)是你唯一的选择。