Quero imprimir algo no console para poder depurá-lo. Mas, por alguma razão, nada é impresso no meu aplicativo Android.
Como eu depuro então?
public class HelloWebview extends Activity {
WebView webview;
private static final String LOG_TAG = "WebViewDemo";
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webview = (WebView) findViewById(R.id.webview);
webview.setWebViewClient(new HelloWebViewClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebChromeClient(new MyWebChromeClient());
webview.loadUrl("http://example.com/");
System.out.println("I am here");
}
Respostas:
Correção:
No emulador e a maioria dos dispositivos
System.out.println
é redirecionada para o LogCat e impressa usandoLog.i()
. Isso pode não ser verdade nas versões Android muito antigas ou personalizadas.Original:
Não há console para o qual enviar as mensagens, para que as
System.out.println
mensagens sejam perdidas. Da mesma forma, isso acontece quando você executa um aplicativo Java "tradicional" comjavaw
.Em vez disso, você pode usar a classe Android
Log
:É possível visualizar o log na visualização Logcat no Eclipse ou executando o seguinte comando:
É bom adquirir o hábito de analisar a saída do logcat, pois também é onde os Rastreamentos de pilha de qualquer exceção não capturada são exibidos.
A primeira entrada para cada chamada de log é a tag de log que identifica a origem da mensagem de log. Isso é útil, pois você pode filtrar a saída do log para mostrar apenas suas mensagens. Para garantir que você seja consistente com sua tag de log, provavelmente é melhor defini-la uma vez como um local
static final String
.Existem cinco métodos de uma letra
Log
correspondentes aos seguintes níveis:e()
- Errow()
- Avisoi()
- Em formaçãod()
- Depurarv()
- Verbosewtf()
- Que falha terrívelA documentação diz o seguinte sobre os níveis :
fonte
Use a classe Log . Saída visível com LogCat
fonte
Sim. Se você estiver usando o emulador, ele será exibido na visualização Logcat sob a
System.out
tag. Escreva algo e tente no seu emulador.fonte
Obviamente, para ver o resultado no logcat, você deve definir o nível de log pelo menos como "Informações" ( nível de log no logcat ); caso contrário, como aconteceu comigo, você não verá sua saída.
fonte
se você realmente precisa do System.out.println para funcionar (por exemplo, é chamado de uma biblioteca de terceiros). você pode simplesmente usar a reflexão para alterar o campo System.class:
Classe RedirectLogOutputStream:
fonte
ele não é exibido no seu aplicativo ... está no logcat do seu emulador
fonte
Não há lugar no seu telefone que você possa ler o
System.out.println();
Em vez disso, se você quiser ver o resultado de algo, olhe para a sua
logcat/console
janela ou faça com que a mensagem aToast
ou aSnackbar
(se você estiver em um dispositivo mais recente) apareça com a mensagem :) É isso que eu faço quando preciso verificar por exemplo, onde ele vai em umswitch case
código! Divirta-se codificando! :)fonte
Android Monitor
elogcat
vejo muitas mensagens constantemente sendo impressas ... Deveria ser assim? Então, como eu veria minhas próprias mensagens de depuração?System.out.println ("...") é exibido no Android Monitor no Android Studio
fonte
Deixarei isso para outros visitantes, pois para mim era algo que o thread principal era incapaz de fazer
System.out.println
.Uso:
LogUtil.println("This is a string");
fonte
Recentemente, notei o mesmo problema no Android Studio 3.3. Fechei os outros projetos de estúdio do Android e o Logcat começou a funcionar. A resposta aceita acima não é lógica.
fonte