Autore Topic: Parsing Feed Rss su Virtual Device funzione, su Galaxy S e Y no  (Letto 1921 volte)

Offline Mic87xp1

  • Nuovo arrivato
  • *
  • Post: 29
  • Respect: 0
    • Mostra profilo
Parsing Feed Rss su Virtual Device funzione, su Galaxy S e Y no
« il: 07 Agosto 2012, 21:59:04 CEST »
0
Salve a tutti, volevo parlarvi di un problema strano.
Ho trovato su internet una guida dove spiegava come realizzare un parser per feed rss.
Seguendo la guida, sono riuscito a scriver un parser che mette in una listview i feed rss.
Ho collegato il Galaxy S un Debug mode, mentre al Galaxy Y ho solo mandato l'Apk firmato via bluetooth.
Nel Virtual Device il parser funziona, sul Galaxy S no. Mi Da' un errore come se non ci fosse connessione ad internet, eppure la wifi sul Galaxy S è collegata al router e funziona.

Vi allego il codice Java e i logcat del Virtual Device e del Galaxy S

p.s. metto hxxp al posto di http perchè altrimenti viene trasformato in link ^^"

layour main
Codice (XML): [Seleziona]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent" >

    <ListView
       android:id="@+id/listMainView"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content" >
    </ListView>

</RelativeLayout>

Classi utilizzate:
Codice (Java): [Seleziona]
public class RssItem {
   
    private String title;
   
    private String link;
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getLink() {
        return link;
    }
    public void setLink(String link) {
        this.link = link;
    }
    @Override
    public String toString() {
        return title;
    }
}

Codice (Java): [Seleziona]
public class RssParseHandler extends DefaultHandler {
         
    private List<RssItem> rssItems;

    private RssItem currentItem;

    private boolean parsingTitle;

    private boolean parsingLink;
 
    public RssParseHandler() {
        rssItems = new ArrayList<RssItem>();
    }

    public List<RssItem> getItems() {
        return rssItems;
    }

    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
                   if ("item".equals(qName)) {
            currentItem = new RssItem();
        } else if ("title".equals(qName)) {
            parsingTitle = true;
        } else if ("link".equals(qName)) {
            parsingLink = true;
        }
    }

    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
        if ("item".equals(qName)) {
            rssItems.add(currentItem);
            currentItem = null;
        } else if ("title".equals(qName)) {
            parsingTitle = false;
        } else if ("link".equals(qName)) {
            parsingLink = false;
        }
    }
   
    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {
        if (parsingTitle) {
            if (currentItem != null)
                currentItem.setTitle(new String(ch, start, length));
        } else if (parsingLink) {
            if (currentItem != null) {
                currentItem.setLink(new String(ch, start, length));
                parsingLink = false;
            }
        }
    }
}

Codice (Java): [Seleziona]
public class RssReader {
    private String rssUrl;

    public RssReader(String rssUrl) {
        this.rssUrl = rssUrl;
    }

    public List<RssItem> getItems() throws Exception {
        SAXParserFactory factory = SAXParserFactory.newInstance();
        SAXParser saxParser = factory.newSAXParser();
        RssParseHandler handler = new RssParseHandler();
        saxParser.parse(rssUrl, handler);
        return handler.getItems();
    }
}

Codice (Java): [Seleziona]
public class ListListener implements OnItemClickListener {
    List<RssItem> listItems;
    Activity activity;
    public ListListener(List<RssItem> aListItems, Activity anActivity) {
        listItems = aListItems;
        activity  = anActivity;
    }
 
    public void onItemClick(AdapterView parent, View view, int pos, long id) {
        Intent i = new Intent(Intent.ACTION_VIEW);
        i.setData(Uri.parse(listItems.get(pos).getLink()));
        activity.startActivity(i);
    }
}

Codice (Java): [Seleziona]
public class MainActivity extends Activity {

    @SuppressLint("ParserError")
        @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        try {
            RssReader rssReader = new RssReader("hxxp://mic87xp1.altervista.org/wordpress/?feed=rss2");
            ListView itcItems = (ListView) findViewById(R.id.listMainView);
            ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, rssReader.getItems());
            itcItems.setAdapter(adapter);
            itcItems.setOnItemClickListener(new ListListener(rssReader.getItems(), this));
        } catch (Exception e) {
            Log.e("RssReader", e.getMessage());
            noInternetDialog();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    private void noInternetDialog(){
               
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setTitle("Errore");
                builder.setMessage("Impossibile trovare il canale Feed Rss.\nControllare la connessione ad internet e eventualmente contattare lo sviluppatore");
                builder.setCancelable(false);
                builder.setPositiveButton("Ok", new OkPositiveButton());
                AlertDialog alert = builder.create();
                alert.show();

        }
        class OkPositiveButton implements DialogInterface.OnClickListener{
                public void onClick(DialogInterface dialog, int which){
                        dialog.dismiss();
                }
        }

   
}

LogCat Virtuad Device:
Codice: [Seleziona]
08-07 21:50:14.279: D/dalvikvm(210): GC_EXPLICIT freed 3768K, 42% free 26662K/45767K, paused 11ms+10ms
08-07 21:50:32.708: E/Watchdog(210): !@Sync 85
08-07 21:50:59.998: E/AlarmManagerService(210): android_server_AlarmManagerService_set to type=3, 7200.000000000
08-07 21:50:59.998: E/AlarmManagerService(210): android_server_AlarmManagerService_set to type=3, 7020.071000000
08-07 21:50:59.998: V/AlarmManager(210): ClockReceiver onReceive() ACTION_TIME_TICK
08-07 21:51:00.005: D/KeyguardUpdateMonitor(210): received broadcast android.intent.action.TIME_TICK
08-07 21:51:00.005: D/KeyguardUpdateMonitor(210): handleTimeUpdate
08-07 21:51:00.037: D/KeyguardViewMediator(210): setHidden false
08-07 21:51:00.076: E/TODmobile(8901): onReceive action=android.intent.action.TIME_TICK
08-07 21:51:00.083: E/TODmobile(8901): hour : 21    minute : 51
08-07 21:51:00.083: E/DigitalClockWidget(8901): updateWidgets
08-07 21:51:00.091: E/TODmobile(8901): hour : 21    minute : 51
08-07 21:51:00.138: D/ClockWidget(210): Current time: 21:51
08-07 21:51:00.287: I/System.out(429): Not a DRM File, opening notmally
08-07 21:51:00.287: I/System.out(429): buffer returned
08-07 21:51:00.294: I/System.out(429): Not a DRM File, opening notmally
08-07 21:51:00.294: I/System.out(429): buffer returned
08-07 21:51:02.708: E/Watchdog(210): !@Sync 86
08-07 21:51:32.708: E/Watchdog(210): !@Sync 87
08-07 21:51:59.998: E/AlarmManagerService(210): android_server_AlarmManagerService_set to type=3, 7200.000000000
08-07 21:51:59.998: E/AlarmManagerService(210): android_server_AlarmManagerService_set to type=3, 7080.071000000
08-07 21:51:59.998: V/AlarmManager(210): ClockReceiver onReceive() ACTION_TIME_TICK
08-07 21:52:00.005: D/KeyguardUpdateMonitor(210): received broadcast android.intent.action.TIME_TICK
08-07 21:52:00.005: D/KeyguardUpdateMonitor(210): handleTimeUpdate
08-07 21:52:00.037: D/KeyguardViewMediator(210): setHidden false
08-07 21:52:00.052: E/TODmobile(8901): onReceive action=android.intent.action.TIME_TICK
08-07 21:52:00.060: E/TODmobile(8901): hour : 21    minute : 52
08-07 21:52:00.060: E/DigitalClockWidget(8901): updateWidgets
08-07 21:52:00.060: E/TODmobile(8901): hour : 21    minute : 52
08-07 21:52:00.123: D/dalvikvm(8901): GC_CONCURRENT freed 386K, 9% free 6807K/7431K, paused 2ms+1ms
08-07 21:52:00.138: D/ClockWidget(210): Current time: 21:52

Logcat Galaxy S:
Codice: [Seleziona]
08-07 21:53:15.044: D/AndroidRuntime(11093): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
08-07 21:53:15.044: D/AndroidRuntime(11093): CheckJNI is OFF
08-07 21:53:15.052: D/AndroidRuntime(11093): setted country_code = ITALY
08-07 21:53:15.052: D/AndroidRuntime(11093): setted sales_code = OMN
08-07 21:53:15.052: D/AndroidRuntime(11093): readGMSProperty: start
08-07 21:53:15.052: D/AndroidRuntime(11093): readGMSProperty: already setted!!
08-07 21:53:15.060: D/AndroidRuntime(11093): readGMSProperty: end
08-07 21:53:15.076: D/PoliciesMultiplexer(8605): grouping policies by name
08-07 21:53:15.076: D/PoliciesMultiplexer(8605): grouped policies by name
08-07 21:53:15.076: D/PoliciesMultiplexer(8605): finding the strongest policies
08-07 21:53:15.076: D/PoliciesMultiplexer(8605): found the strongest policies
08-07 21:53:15.076: D/PoliciesMultiplexer(8605): applying policies to the device
08-07 21:53:15.083: D/ExchangeService(8655): collect eas accounts
08-07 21:53:15.099: D/ExchangeService(8655): onAccountChanged(): mAccountList size is 1
08-07 21:53:15.123: I/ExchangeService(8655): updateAccountDb start
08-07 21:53:15.123: I/ExchangeService(8655): 3: in offpeak=[-2] db interval=[-2]
08-07 21:53:15.138: D/EmailProvider(8617): getDB first open?false
08-07 21:53:15.138: D/EmailProvider(8617): get used db ok
08-07 21:53:15.138: I/ExchangeService(8655): updateAccountDb end
08-07 21:53:15.138: D/ActivityThread(8617): Loading provider com.android.email.provider;com.android.email.notifier: com.android.email.provider.EmailProvider
08-07 21:53:15.177: D/PoliciesMultiplexer(8605): update
08-07 21:53:15.177: D/PoliciesMultiplexer(8605): getAllPolicies
08-07 21:53:15.185: D/PoliciesMultiplexer(8605): grouping policies by name
08-07 21:53:15.185: D/PoliciesMultiplexer(8605): grouped policies by name
08-07 21:53:15.185: D/PoliciesMultiplexer(8605): finding the strongest policies
08-07 21:53:15.185: D/PoliciesMultiplexer(8605): found the strongest policies
08-07 21:53:15.185: D/PoliciesMultiplexer(8605): applying policies to the device
08-07 21:53:15.208: I/ExchangeService(8655): updateAccountDb start
08-07 21:53:15.208: I/ExchangeService(8655): 3: in offpeak=[-2] db interval=[-2]
08-07 21:53:15.216: I/ExchangeService(8655): updateAccountDb end
08-07 21:53:15.240: D/LibQmg_native(11093): register_android_app_LibQmg
08-07 21:53:15.271: D/AndroidRuntime(11093): Calling main entry com.android.commands.am.Am
08-07 21:53:15.279: I/power(210): *** acquire_dvfs_lock : lockType : 1  freq : 1008000
08-07 21:53:15.279: I/ActivityManager(210): START {intent.toShortString} from pid 11093
08-07 21:53:15.279: D/PowerManagerService(210): acquireDVFSLockLocked : type : DVFS_MIN_LIMIT  frequency : 1008000  uid : 1000  pid : 210  tag : ActivityManager
08-07 21:53:15.279: W/ActivityManager(210): mDVFSLock.acquire()
08-07 21:53:15.294: D/dalvikvm(8605): GC_EXPLICIT freed 363K, 10% free 7795K/8647K, paused 2ms+3ms
08-07 21:53:15.341: D/KeyguardViewMediator(210): setHidden false
08-07 21:53:15.357: D/AndroidRuntime(11093): Shutting down VM
08-07 21:53:15.357: D/ActivityManager(210): Trying to launch applicationName
08-07 21:53:15.365: D/dalvikvm(11093): GC_CONCURRENT freed 102K, 81% free 509K/2560K, paused 0ms+1ms
08-07 21:53:15.365: D/jdwp(11093): Got wake-up signal, bailing out of select
08-07 21:53:15.365: D/dalvikvm(11093): Debugger has detached; object registry had 1 entries
08-07 21:53:15.373: I/AndroidRuntime(11093): NOTE: attach of thread 'Binder Thread #3' failed
08-07 21:53:15.373: D/OpenGLRenderer(10353): Flushing caches (mode 1)
08-07 21:53:15.388: D/KeyguardViewMediator(210): setHidden false
08-07 21:53:15.412: E/ITCRssReader(10865): Couldn't open hxxp://mic87xp1.altervista.org/wordpress/?feed=rss2
08-07 21:53:15.427: D/STATUSBAR-StatusBarManagerService(210): setSystemUiVisibility(0x0)

Nel Manifest ho messo questo permesso:
Codice (XML): [Seleziona]
<uses-permission android:name="android.permission.INTERNET" />
Forse ne devo aggiungere altri?
« Ultima modifica: 08 Agosto 2012, 15:55:49 CEST da Mic87xp1 »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Parsing Feed Rss su Virtual Device funzione, su Galaxy S e Y no
« Risposta #1 il: 09 Agosto 2012, 08:14:23 CEST »
0
Codice: [Seleziona]
08-07 21:53:15.412: E/ITCRssReader(10865): Couldn't open hxxp://mic87xp1.altervista.org/wordpress/?feed=rss2
Ma perchè hxxp ?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Mic87xp1

  • Nuovo arrivato
  • *
  • Post: 29
  • Respect: 0
    • Mostra profilo
R: Parsing Feed Rss su Virtual Device funzione, su Galaxy S e Y no
« Risposta #2 il: 09 Agosto 2012, 08:35:55 CEST »
0
Perché altrimenti il forum me lo trasformava in automatico in link é usciva una cosa strana ^^" . Nell' app ho messo http

Inviato dal mio GT-P5100 con Tapatalk 2

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Parsing Feed Rss su Virtual Device funzione, su Galaxy S e Y no
« Risposta #3 il: 09 Agosto 2012, 09:32:05 CEST »
0
Una cosa che noto è che passi al SAXparser l'url dell'xml, cosa che sinceramente vedo per la prima volta. Avevo sempre visto esempi in cui si prelevava l'xml attraverso una HttpUrlConnection ( Data Fetching | Android Tutorial | Android SDK Development & Programming ) e quindi si passava al SAXparser.

Codice (Java): [Seleziona]
saxParser.parse(rssUrl, handler);
E in generale, le operazioni di http connection e parsing dovrebbero essere svolte in un asynctak (o thread).
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Mic87xp1

  • Nuovo arrivato
  • *
  • Post: 29
  • Respect: 0
    • Mostra profilo
Re:Parsing Feed Rss su Virtual Device funzione, su Galaxy S e Y no
« Risposta #4 il: 09 Agosto 2012, 16:23:41 CEST »
0
Mmh allora, vediamo se ho capito.
Devo ottenere un InputStream da un metodo OpenHttpConnection passandogli un url e utilizzando l'HttpUrlConnection come nell'esempio.
Dopo di che devo passare al metodo parse di saxparser l'inputstream e l'handler che ho già, giusto?

Se è così ho provato ma adesso mi da' questo errore:
Codice: [Seleziona]
08-09 16:26:54.520: D/OpenGLRenderer(9578): Flushing caches (mode 1)
08-09 16:27:15.934: E/ITCRssReader(10000): Error connecting
08-09 16:27:16.020: D/libEGL(10000): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
08-09 16:27:16.020: D/libEGL(10000): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
08-09 16:27:16.028: D/libEGL(10000): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
08-09 16:27:16.106: D/OpenGLRenderer(10000): Enabling debug mode 0

Non riesce a connettersi. Ma la wifi è collegata .....

Poi per mia curiosità ho fatto un'altra cosa, ho creato un nuovo progetto ed ho incollato il progetto presente nella guida che mi hai linkato.
Ho sempre lo stesso problema, il logcat dice:
Codice: [Seleziona]
08-09 16:40:00.169: D/OpenGLRenderer(11564): Flushing caches (mode 0)
08-09 16:40:10.583: W/System.err(12199): java.io.IOException: Error connecting
08-09 16:40:10.583: W/System.err(12199):         at com.apps.httpsData.httpsData.OpenHttpConnection(httpsData.java:86)
08-09 16:40:10.583: W/System.err(12199):         at com.apps.httpsData.httpsData.DownloadText(httpsData.java:33)
08-09 16:40:10.583: W/System.err(12199):         at com.apps.httpsData.httpsData.onCreate(httpsData.java:23)
08-09 16:40:10.583: W/System.err(12199):         at android.app.Activity.performCreate(Activity.java:4465)
08-09 16:40:10.583: W/System.err(12199):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053)
08-09 16:40:10.583: W/System.err(12199):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)
08-09 16:40:10.583: W/System.err(12199):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
08-09 16:40:10.583: W/System.err(12199):         at android.app.ActivityThread.access$600(ActivityThread.java:128)
08-09 16:40:10.583: W/System.err(12199):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
08-09 16:40:10.591: W/System.err(12199):         at android.os.Handler.dispatchMessage(Handler.java:99)
08-09 16:40:10.591: W/System.err(12199):         at android.os.Looper.loop(Looper.java:137)
08-09 16:40:10.591: W/System.err(12199):         at android.app.ActivityThread.main(ActivityThread.java:4514)
08-09 16:40:10.591: W/System.err(12199):         at java.lang.reflect.Method.invokeNative(Native Method)
08-09 16:40:10.591: W/System.err(12199):         at java.lang.reflect.Method.invoke(Method.java:511)
08-09 16:40:10.591: W/System.err(12199):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
08-09 16:40:10.591: W/System.err(12199):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
08-09 16:40:10.591: W/System.err(12199):         at dalvik.system.NativeStart.main(Native Method)
08-09 16:40:10.653: D/libEGL(12199): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
08-09 16:40:10.653: D/libEGL(12199): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
08-09 16:40:10.661: D/libEGL(12199): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
08-09 16:40:10.778: D/OpenGLRenderer(12199): Enabling debug mode 0

Non so più cosa fare ^^"
« Ultima modifica: 09 Agosto 2012, 16:46:15 CEST da Mic87xp1 »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Parsing Feed Rss su Virtual Device funzione, su Galaxy S e Y no
« Risposta #5 il: 09 Agosto 2012, 17:24:22 CEST »
0
Analizzi il codice del progetto, si vede che una IOException viene generata quando accade qualcosa di tremendamente storto durante la connessione.

Per esempio se metti un URL non valido. Quale hai messo?

In generale comincia a mettere un po' di Log.d() nel metodo OpenHttpCOnnection per capire a quale riga si genera l'eccezione. Oppure vai di debug passo-passo.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Mic87xp1

  • Nuovo arrivato
  • *
  • Post: 29
  • Respect: 0
    • Mostra profilo
Re:Parsing Feed Rss su Virtual Device funzione, su Galaxy S e Y no
« Risposta #6 il: 09 Agosto 2012, 21:09:29 CEST »
0
Bradipo, il secondo Logcat è riferito al codice che ho copiato e incollato dalla guida che hai linkato tu così com'è.
L'url che ho inserito è lo stesso della guida, cioè Android Tutorial | Android SDK Development & Programming Tutorial.
E comunque sull'android virtual device l'app funziona, continuo a non capire perchè sugli smartphone reali non va ^^"
Comunque ora metto tutti i Log.d() a tutte le Exception presenti nel codice e vediamo cosa dice.

Allora, se avvio il codice presente nella tua guida nella Android Virtual Machine che ho creato io su Adt l'applicazione funziona senza alcun errore e il suo Logcat è:
Codice: [Seleziona]

08-09 19:17:22.478: D/dalvikvm(542): GC_EXTERNAL_ALLOC freed 49K, 50% free 2691K/5379K, external 0K/0K, paused 51ms
08-09 19:17:28.518: D/dalvikvm(542): GC_CONCURRENT freed 340K, 50% free 2822K/5639K, external 3K/514K, paused 4ms+3ms
08-09 19:17:28.548: D/dalvikvm(542): GC_FOR_MALLOC freed 497K, 52% free 2812K/5831K, external 3K/514K, paused 32ms
08-09 19:17:28.678: D/dalvikvm(542): GC_CONCURRENT freed 330K, 50% free 2967K/5831K, external 3K/514K, paused 5ms+3ms
08-09 19:17:28.708: D/dalvikvm(542): GC_FOR_MALLOC freed 598K, 53% free 2851K/5959K, external 3K/514K, paused 30ms
08-09 19:17:28.828: D/dalvikvm(542): GC_CONCURRENT freed 293K, 49% free 3041K/5959K, external 3K/514K, paused 5ms+3ms
08-09 19:17:28.868: D/dalvikvm(542): GC_FOR_MALLOC freed 428K, 52% free 2875K/5959K, external 3K/514K, paused 31ms
08-09 19:17:28.988: D/dalvikvm(542): GC_CONCURRENT freed 268K, 49% free 3090K/5959K, external 3K/514K, paused 5ms+4ms
08-09 19:17:29.018: D/dalvikvm(542): GC_FOR_MALLOC freed 576K, 53% free 2898K/6087K, external 3K/514K, paused 30ms
08-09 19:17:29.138: D/dalvikvm(542): GC_CONCURRENT freed 308K, 51% free 3041K/6087K, external 3K/514K, paused 5ms+3ms
08-09 19:17:29.438: D/dalvikvm(542): GC_CONCURRENT freed 691K, 54% free 2822K/6087K, external 3K/514K, paused 4ms+3ms

Invece se avvio l'app sullo smartphone mi solleva un'eccezione e il logcat è:
Codice: [Seleziona]
08-09 22:05:24.445: D/httpData(5540): android.os.NetworkOnMainThreadException
08-09 22:05:24.445: W/System.err(5540): java.io.IOException: Error connecting
08-09 22:05:24.453: W/System.err(5540):         at com.apps.httpsData.httpsData.OpenHttpConnection(httpsData.java:90)
08-09 22:05:24.453: W/System.err(5540):         at com.apps.httpsData.httpsData.DownloadText(httpsData.java:36)
08-09 22:05:24.453: W/System.err(5540):         at com.apps.httpsData.httpsData.onCreate(httpsData.java:26)
08-09 22:05:24.453: W/System.err(5540):         at android.app.Activity.performCreate(Activity.java:4465)
08-09 22:05:24.453: W/System.err(5540):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053)
08-09 22:05:24.453: W/System.err(5540):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)
08-09 22:05:24.453: W/System.err(5540):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
08-09 22:05:24.453: W/System.err(5540):         at android.app.ActivityThread.access$600(ActivityThread.java:128)
08-09 22:05:24.453: W/System.err(5540):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
08-09 22:05:24.453: W/System.err(5540):         at android.os.Handler.dispatchMessage(Handler.java:99)
08-09 22:05:24.453: W/System.err(5540):         at android.os.Looper.loop(Looper.java:137)
08-09 22:05:24.453: W/System.err(5540):         at android.app.ActivityThread.main(ActivityThread.java:4514)
08-09 22:05:24.453: W/System.err(5540):         at java.lang.reflect.Method.invokeNative(Native Method)
08-09 22:05:24.453: W/System.err(5540):         at java.lang.reflect.Method.invoke(Method.java:511)
08-09 22:05:24.453: W/System.err(5540):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
08-09 22:05:24.453: W/System.err(5540):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
08-09 22:05:24.453: W/System.err(5540):         at dalvik.system.NativeStart.main(Native Method)
08-09 22:05:24.492: D/libEGL(5540): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
08-09 22:05:24.515: D/libEGL(5540): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
08-09 22:05:24.515: D/libEGL(5540): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
08-09 22:05:24.718: D/OpenGLRenderer(5540): Enabling debug mode 0
« Ultima modifica: 09 Agosto 2012, 22:06:01 CEST da Mic87xp1 »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Parsing Feed Rss su Virtual Device funzione, su Galaxy S e Y no
« Risposta #7 il: 10 Agosto 2012, 08:20:17 CEST »
0
Codice: [Seleziona]
08-09 22:05:24.453: W/System.err(5540):         at com.apps.httpsData.httpsData.OpenHttpConnection(httpsData.java:90)
Rigo 90 di httpsData.java, sembra essere la causa originatrice. Che punto è del codice? il connect()?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Parsing Feed Rss su Virtual Device funzione, su Galaxy S e Y no
« Risposta #8 il: 10 Agosto 2012, 09:21:01 CEST »
+2
Ho notato questa riga nel logcat:
Citazione
08-09 22:05:24.445: D/httpData(5540): android.os.NetworkOnMainThreadException
Che è l'eccezione che viene sollevata da HC in poi quando si cerca di usare la rete sul main thread. Però non credo che Galaxy S e Y abbiano una versione superiore alla 2.x..Se però sul device è abilitato lo "Strict Mode" l'eccezione viene sollevata lo stesso anche su GB. É possibile che sia questo il caso?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Parsing Feed Rss su Virtual Device funzione, su Galaxy S e Y no
« Risposta #9 il: 10 Agosto 2012, 09:30:53 CEST »
+1
Ho notato questa riga nel logcat:Che è l'eccezione che viene sollevata da HC in poi quando si cerca di usare la rete sul main thread. Però non credo che Galaxy S e Y abbiano una versione superiore alla 2.x..Se però sul device è abilitato lo "Strict Mode" l'eccezione viene sollevata lo stesso anche su GB. É possibile che sia questo il caso?

Hai perfettamente ragione. E' questa la causa. E la cosa si verifica non se il telefono ha HC, ma se il target SDK è API 11 (HC) o superiore: NetworkOnMainThreadException | Android Developers

La soluzione è come avevo accennato nella primissima risposta:
E in generale, le operazioni di http connection e parsing dovrebbero essere svolte in un asynctak (o thread).

Cioè qualsiasi operazione di rete dovrebbe deve essere svolta in in un asynctask (o thread separato).

Qua c'è un esempio, ma anche sul forum ce ne sono.
networking - android.os.NetworkOnMainThreadException - Stack Overflow
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Mic87xp1

  • Nuovo arrivato
  • *
  • Post: 29
  • Respect: 0
    • Mostra profilo
Re:Parsing Feed Rss su Virtual Device funzione, su Galaxy S e Y no
« Risposta #10 il: 10 Agosto 2012, 14:09:55 CEST »
0
Ottimo ragazzi, non so come ringraziarvi.
Utilizzando l'Asynctask l'app funziona alla grande.
Quindi per quasi tutte le operazioni di connessioni url conviene sempre utilizzare un secondo Thread o un AnsyncTask giusto?

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Parsing Feed Rss su Virtual Device funzione, su Galaxy S e Y no
« Risposta #11 il: 10 Agosto 2012, 14:17:56 CEST »
0
Citazione
Quindi per quasi tutte le operazioni di connessioni url conviene sempre utilizzare un secondo Thread o un AnsyncTask giusto?
Togli il "quasi" e il "conviene"  :-P

Tutte le operazioni asincrone o potenzialmente bloccanti (connessioni http, uso del db, calcoli laboriosi...per dirne qualcuna a caso) vanno fatte girare sempre su un thread diverso dal main thread.

Offline Mic87xp1

  • Nuovo arrivato
  • *
  • Post: 29
  • Respect: 0
    • Mostra profilo
R: Parsing Feed Rss su Virtual Device funzione, su Galaxy S e Y no
« Risposta #12 il: 10 Agosto 2012, 14:46:29 CEST »
0
Ok, capito. Grazie di tutto :-)