在不重新启动的情况下刷新android systemui

在不重新启动的情况下刷新android systemui,android,Android,如何在不重新启动设备的情况下在源代码中重新启动SystemUI 我正在尝试在不重新启动的情况下切换系统字体,除了SystemUI之外,一切都正常。我想立即重新启动SystemUI,而不是重新启动设备 谢谢~~~调用下面的方法,从您想要的地方将剩余的部分放到UI中 private void restartSelf() { AlarmManager am = (AlarmManager)getActivity().getSystemService(Context.ALARM_SERVI

如何在不重新启动设备的情况下在源代码中重新启动SystemUI

我正在尝试在不重新启动的情况下切换系统字体,除了SystemUI之外,一切都正常。我想立即重新启动SystemUI,而不是重新启动设备


谢谢~~~

调用下面的方法,从您想要的地方将剩余的部分放到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);  
}  

需要根访问权限,但您可以通过以下方法重新启动系统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,这是不可能的,因此这(或类似的特权滥用)是您唯一的选择。

将上述方法从您想要的地方调用到ui。此外,我正在修改Android源代码。重启SystemUI正常,但重启后会跳转到Keyguard。刷新systemui的视图是关键