Возможно ли для приложения Android видеть свой собственный файл журнала? - PullRequest
1 голос
/ 27 января 2012

Я попытался использовать LogCat на моем устройстве Android (которое использует Android 1.5, и нет, его пока невозможно обновить, пока что нет), и обнаружил, что он только отслеживает события журнала, которые происходят во время его работы.

Возможно ли для приложения отслеживать все события, которые регистрируются во время его выполнения, и сохранять их в файл? (даже те, которые не запускаются сами собой)

Ответы [ 2 ]

0 голосов
/ 07 марта 2013

Как выясняется, в этом учебном пособии описывается способ выгрузки копии системных журналов в объект StringBuilder.

Код, скопированный из учебного пособия:

public class LogTest extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        try {
            Process process = Runtime.getRuntime().exec("logcat -d");
            BufferedReader bufferedReader = new BufferedReader(
            new InputStreamReader(process.getInputStream()));

            StringBuilder log=new StringBuilder();
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                log.append(line);
            }
            TextView tv = (TextView)findViewById(R.id.textView1);
            tv.setText(log.toString());
        } catch (IOException e) { }
    }
}

Обратите внимание, что вам необходимо включить разрешение на чтение журналов:
<uses-permission android:name="android.permission.READ_LOGS" />.

Важной частью кода является часть Runtime.getRuntime().exec("logcat -d").Переключатель -d - это часть, которая отбрасывает текущий журнал и завершает работу.Если я правильно читаю документацию , то при отключении этого переключателя теоретически можно оставить logcat включенным, сбросив последовательные строки журнала в stdout, как они отображаются.

0 голосов
/ 27 января 2012

Создайте базу данных и IntentService, который может писать в нее.

Запустите эту службу, используя Intent, когда какой-либо компонент захочет что-либо записать.

Я что-то упустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...