App funktioniert nicht mehr mit Android 4 BufferedReader ?

  • Antworten:8
Erich Floh
  • Forum-Beiträge: 12

22.07.2012, 11:06:56 via Website

Hallo
Da ich keine Erklärung habe und nichts brauchbares finde bitte ich hier um hilfe.

Dieses App habe ich seit einiger zeit mit einem Galaxy S2 in betrieb und funktioniert einwandfrei, nun möchte ich es aber mit einer anderen HW verwenden (Android 4.0.3) und ich bekomme beim aufruf dieser Activity Unfortunately homecontrol has stopped
[code] package home.control.namespace;

import android.app.Activity;
import android.app.NotificationManager;
import android.content.Context;
import android.os.Bundle;
// used for interacting with user interface
//import android.text.TextUtils;
import android.view.View;
//import android.view.View.OnClickListener;
// used for passing data
import android.os.Handler;
import android.os.Message;
// used for connectivity
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.*;
import android.widget.*;
//import android.widget.AdapterView.OnItemSelectedListener;
//import java.io.*;
import java.util.HashMap;



public class WetterstationActivity extends Activity {

/** Called when the activity is first created. */
final Context context = this;
private TextView myText;
String stream ;
int auswahl;
BufferedReader rd =null;
InputStream is = null;


ArrayList<HashMap<String, String>> DatenList = new ArrayList<HashMap<String, String>>();


Handler h;
NotificationManager notMan;
String text="";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.wetterstation);


final TextView tView = (TextView) findViewById(R.id.pagetext);
Spinner spinner = (Spinner) findViewById(R.id.spinner1);

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.ort_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);


notMan = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
findViewById(R.id.button7).setOnClickListener(
new View.OnClickListener() {
Message lmsg;
@Override
public void onClick(View v) {

Spinner spinner = (Spinner) findViewById(R.id.spinner1);
/** Hier die Geräteabfrage zur Umschaltung der einzellnen Seiten. */
if(spinner.getSelectedItemPosition()==1){

text="";
text="http://xxx.xxx.210.109/var.txt";
DatenList.clear();
auswahl=1;
}
if(spinner.getSelectedItemPosition()==2){

text="";
text="http://xxx.xxx.198.11/var.txt";
DatenList.clear();
auswahl=2;
}
if(spinner.getSelectedItemPosition()==3){

text="";
text="http://xxx.xxx.7.175/var.txt";
DatenList.clear();
auswahl=3;
}




try {

tView.setText("");

URL url = new URL(text);
URLConnection conn = url.openConnection();
// Get the response

rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = "";

while ((line = rd.readLine()) != null) {

stream += line;



}


}


catch (Exception e) {


String [] sstream={"",""};

HashMap<String, String> map = new HashMap<String, String>();
sstream = stream.split( ";|,");

for (int i=0; i+1<sstream.length; i+=2)
{


map.put(sstream[i], sstream[i+1]);

}



myText = (TextView) findViewById(R.id.pagetext);
myText.setTextColor(getResources().getColor(R.color.red));
myText.setFocusable(true);
//Set keys = map.keySet();

if(auswahl==1){
text="\n\n Temperatur Aussen: "+ map.get("tempa") +" °C \n Feuchte Aussen: " +map.get("feuchtea")+ " %\n Taupunkt: "+map.get("taupa")+"°C\n Wind Geschwindigkeit: "+map.get("windgesch")+"\n Luftdruck Absolut: "+map.get("absdruck")+" hPa\n Relativ Luftdruck: "+map.get("reldruck")+" Wettervorhersage: "+map.get("wettervorschau")+"\n Statische Entladung: "+map.get("statik")+"kV/m\n Temperatur innen: "+map.get("tempi")+" °C\n Feuchte Innen: "+map.get("feuchtei")+" %\n" ;

myText.setText(text);
}
if(auswahl==2){
text="\n\n Temperatur Aussen: "+ map.get("tempa") +" °C \n Feuchte Aussen: " +map.get("feuchtea")+ " %\n Taupunkt: "+map.get("taupa")+"°C\n Wind Geschwindigkeit: "+map.get("windgesch")+" km/h\n Windrichtung: "+map.get("windrichtung")+" "+map.get("windrichgrad")+" Grad\n Luftdruck Absolut: "+map.get("absdruck")+" hPa\n Relativ Luftdruck: "+map.get("reldruck")+" hPa\n Niederschlag: "+map.get("niedersch")+"mm "+map.get("regentrocken")+"\n Wettervorhersage: "+map.get("wettervorschau")+"\n Statische Entladung: "+map.get("statik")+"kV/m\n Temperatur innen: "+map.get("tempi")+" °C\n Feuchte Innen: "+map.get("feuchtei")+" %\n Gasverbrauch: "+map.get("gasv")+" m3\n" ;
myText.setText(text);
}
if(auswahl==3){
text="\n\n Temperatur Aussen: "+ map.get("tempa") +" °C \n Feuchte Aussen: " +map.get("feuchtea")+ " %\n Taupunkt: "+map.get("taupa")+"°C\n Luftdruck Absolut: "+map.get("absdruck")+" hPa\n Relativ Luftdruck: "+map.get("reldruck")+" hPa\n Wettervorhersage: "+map.get("wettervorschau")+"\n Temperatur innen: "+map.get("tempi")+" °C\n " ;
myText.setText(text);
}

}


}

});

}

}
[/code]

IP habe ich verändert
empfangen wird ein kleines asccifile

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

22.07.2012, 11:38:40 via Website

schau dir halt die log ausgaben an.

ich tippe mal auf networkOnMainThreadException

swordiApps Blog - Website

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

22.07.2012, 11:39:08 via Website

Ich sehe keinen Thread für den Netzwerkverkehr. Wenn ich raten dürfte:

Schau mal im Web nach "Android StrictMode NetworkOnMainThreadException".

Android hat ab Version 3 mit jeder Version die Messlatte höher gelegt. Sogar innerhalb 4.0-4.0.3 wurde die Überwachung der Apps schärfer.

Antworten
Erich Floh
  • Forum-Beiträge: 12

22.07.2012, 13:09:06 via Website

Ich habe diesen Log.
Jedoch kann ich es nicht auflösen.
Ich bekomme fehler mit dem TAG AndroidRuntime
wollte den log hier posten jedoch weiß ich nicht wie ich den log hier copieren kann.

Antworten
Erich Floh
  • Forum-Beiträge: 12

22.07.2012, 15:57:56 via Website

Ich habe nun bemerkt das die URL nicht geöffnet wird und die var.txt nicht gelesen wird
danach hangt er sich bei "sstream = stream.split( ";|,");" auf
ich habe nun diese zeile ausgeklammert und ich bekomme den Anzeigetext ohne Werte(die eingelesen werden sollen)
aber der app-abbruch ist nun vorbei.
hast du dafür eine erklärung?
mfg

Antworten
Markus B.
  • Forum-Beiträge: 636

22.07.2012, 16:29:40 via Website

Hi,
ohne den ganzen StackTrace zum Fehler wirds halt schwer. Wenn du uns den schickst macht es die Sache leichter.
Da diese Änderungen den Absturz verhinder tippe ich mal auf IndexOutOfBoundsException oder NullPointerException.
Aber du ich auch wieder nur geraten und das kannst du mit dem StackTrace hat verhindern :)

Gruß,
Markus

Antworten
Erich Floh
  • Forum-Beiträge: 12

22.07.2012, 16:56:48 via Website

Ich bekomme nun im LogCat keine Fehlermeldungen mehr.
nur die url wird nicht geöffnet und das file am fremdserver nicht gelesen.
nach buttonOnKlick bekomme ich sofort den AnzeigeText ohne verzögerung.
ich sollte eine verzögerung haben da er zeit zum abrufen braucht.

String.Split is ausgeklammert

Antworten