Я использую logcat для регистрации сообщений в своем приложении для Android, и я хотел бы иметь доступ к этим сообщениям и показывать их в TextView в DialogFragment. Список сообщений очень несовместим и меняется каждый раз, когда я открываю и закрываю диалог. Он показывает полную историю один раз, а затем в следующий раз, когда он стирает, а иногда он показывает еще несколько сообщений. Есть ли что-нибудь, что я могу сделать, чтобы показать все сообщения (для запуска) каждый раз, когда я открываю диалог? Я запускаю процесс в неподходящее время или что-то в этом роде? Или должен ли буфер обрабатываться где-то еще? Благодарю.Как распечатать полную историю журнала в TextView на Android?
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_view_logs:
// View Logs MenuItem tapped
if (logsDialogFragment == null) {
logsDialogFragment = new LogsDialogFragment();
}
logsDialogFragment.show(getFragmentManager(), "dialog");
return true;
case R.id.action_exit:
// Exit MenuItem tapped
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public class LogsDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Log.i(WifiDirectHandler.LOG_TAG, "Viewing Logs");
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity())
.setTitle(getString(R.string.title_logs))
.setNegativeButton(getString(R.string.action_close),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
}
}
);
LayoutInflater i = getActivity().getLayoutInflater();
View rootView = i.inflate(R.layout.fragment_logs_dialog, null);
TextView logTextView = (TextView) rootView.findViewById(R.id.logTextView);
logTextView.setMovementMethod(new ScrollingMovementMethod());
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) {
if (line.contains(WifiDirectHandler.LOG_TAG)){
// Removes log tag and PID from the log line
log.append(line.substring(line.indexOf(": ") + 2)).append("\n");
}
}
logTextView.setText(log.toString());
} catch (IOException e) {
}
dialogBuilder.setView(rootView);
return dialogBuilder.create();
}
}
есть «logTextView», показывающий результат? –
Да, но результаты разные, каждый раз, когда я открываю и закрываю диалог. – Brendan
Результат не будет таким же, Его естественным, Ложная кошка показывает разные, см. Подробные, Вы можете не получить то же самое. –