刷新android systemui而无需重启

时间:2016-04-22 09:55:08

标签: android

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

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

感谢~~~

2 个答案:

答案 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就不可能,所以这个(或类似的特权滥用)是你唯一的选择。