2013-04-14 3 views
1

Я пишу приложение для Android, которое устанавливает максимальную частоту, регулятор и т. Д., Когда экран выключается. Для этого у меня есть служба, которая получает трансляцию в режиме включения/выключения экрана. Когда экран выключен событие срабатывает, я прочитал от общих предпочтений и установить любой устанавливается пользователем с помощью этой функцииAndroid выполняет команды SU в фоновом режиме?

public static void writeFile(String file, String content) { 
    try { 
     Process suProcess = Runtime.getRuntime().exec("su"); 
     DataOutputStream out = new DataOutputStream(suProcess.getOutputStream()); 
     out.writeBytes("echo '" + content + "' > '" + file + "'"); 
     out.flush(); 
     out.close(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

Затем, когда экран снова включится, я вернуть систему в прежнее состояние, переписав файлы. Все работает красиво, работает по назначению.

Проблема в том, что я замечаю некоторое отставание при включении/выключении экрана. Также, когда я включаю экран, я вижу сообщение тоста от SuperUser «Приложение было предоставлено su access», и оно появляется один раз для каждой команды. Есть ли способ скрыть это тост-сообщение? Я не нашел способа скрыть тост-сообщение от другого действия. Я знаю, что они могут быть отключены в приложении суперпользователя, но это не идеально. Я читал, что вы можете написать свой собственный суперпользователь, но это звучит намного сложнее, чем простое программирование на Java ... также похоже, что это может привести к проблемам безопасности.

В принципе, я спрашиваю, что это лучший способ сделать это, чтобы он был как нельзя более инвазивным для пользователя?

ответ

0

Я не использовал su, но я думаю, что если вы не закрываете поток каждый раз, он должен показывать только тост один раз.

Смежные вопросы