Android.OS.NetworkOnMainThreadException envoyer un e-mail à partir D'Android [dupliquer]
cette question a déjà une réponse ici:
j'ai écrit une application qui envoie un courrier électronique à partir d'un appareil Android, mais j'obtiens l'exception suivante lorsque j'essaie d'envoyer un courriel:
android.os.NetworkOnMainThreadException
pourquoi cela se produit-il et comment puis-je le corriger?
2 réponses
quelle version SDK? Si 14+ voir ce lien .
la solution est
JUST FOR DEBUG
ajouter ces lignes
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
Cas Réel Mettez le code sur un AsyncTask
private class Connection extends AsyncTask {
@Override
protected Object doInBackground(Object... arg0) {
connect();
return null;
}
}
puis appeler
new Connection().execute("");
cette exception signifie que vous essayez de faire une opération liée au réseau sur le thread principal de L'interface utilisateur. Vous devez faire soit dans un fil séparé ou dans AsyncTask.
Le documentation dit que:
The exception that is thrown when an application attempts to perform a
networking operation on its main thread. This is only thrown for applications
targeting the Honeycomb SDK or higher. Applications targeting earlier SDK
versions are allowed to do networking on their main event loop threads, but it's
heavily discouraged
Voir Comment réparer android.OS.NetworkOnMainThreadException? et Android - android.OS.NetworkOnMainThreadException pour plus d'. Pour obtenir plus de vous aider à pourriez avoir besoin de montrer plus de code.
quelque chose comme:
class RetreiveFeedTask extends AsyncTask<String, Void, Void> {
protected Void doInBackground(String... urls) {
//Execurte the network related option here
}
protected void onPostExecute(Void param) {
// TODO: do something with the feed
}
}
Voici comment exécuter la tâche:
new RetreiveFeedTask().execute(urlToRssFeed);