Aplicativo funciona em todos emuladores mas não no dispositivo

2 respostas
E

Bom dia pessoal, estou com um problema em meu aplicativo.

Estou desenvolvendo um aplicativo que vai buscar em um banco de dados uma lista de registros via PHP com Json e lista em ListView. Eu testei em todas as versões de emuladores que tenho aqui e funcionou corretamente. Mas ao testar no dispositivo real da erro e ele fecha. Ao testar no dispositivo via USB pelo Eclipse ele não fecha mas não carrega a lista.

Abaixo o código:

import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.apache.http.NameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class ListaRadios extends ListActivity {
	private ProgressDialog pDialog;
	JSONParser jParser = new JSONParser();
	ArrayList<HashMap<String, String>> listaradios;
	private static String url_radios = "Url para o php";
	private static final String TAG_SUCESSO = "sucesso";
	private static final String TAG_RADIOS = "radios";
	private static final String TAG_ID = "id";
	private static final String TAG_NOME = "nome";
	
	JSONArray radios = null;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.lista_radios);
		
		listaradios = new ArrayList<HashMap<String, String>>();
		
		new LoadAllRadios().execute();
		
		ListView lv = getListView();
		
		lv.setOnItemClickListener(new OnItemClickListener(){
			public void onItemClick(AdapterView<?> parent, View view, int position, long id_item) {
				String id = ((TextView) view.findViewById(R.id.id)).getText().toString();
				Intent in = new Intent(getApplicationContext(), Player.class);
				in.putExtra(TAG_ID, id);
				startActivityForResult(in, 100);
			}
		});
	}

	public boolean onCreateOptionsMenu(Menu menu) {
	    MenuInflater inflater = getMenuInflater();
	    inflater.inflate(R.menu.main, menu);
	    return true;
	}

	private void direciona(Class<?> menu){
		Intent myIntent = new Intent(this, menu);
		startActivity(myIntent);
	}

	public boolean onOptionsItemSelected(MenuItem item) {		
	    // Handle item selection
	    switch (item.getItemId()) {
	        case R.id.contato:
	        	direciona(Contato.class);
	            return true;
  	        case R.id.sugerir:
  	        	direciona(Sugerir.class);
	            return true;
  	      case R.id.listar:
	        	direciona(ListaRadios.class);
          return true;
	        case R.id.player:
	        	direciona(Player.class);
          return true;
	        default:
	            return super.onOptionsItemSelected(item);
	    }
	}

	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		if (resultCode == 100) {
			Intent intent = getIntent();
			finish();
			startActivity(intent);
		}

	}

	class LoadAllRadios extends AsyncTask<String, String, String> {
		protected void onPreExecute() {
			super.onPreExecute();
			pDialog = new ProgressDialog(ListaRadios.this);
			pDialog.setMessage("Buscando rádios. Aguarde...");
			pDialog.setIndeterminate(false);
			pDialog.setCancelable(false);
			pDialog.show();
		}

		protected String doInBackground(String... args) {

			List<NameValuePair> params = new ArrayList<NameValuePair>();

			JSONObject json = jParser.makeHttpRequest(urlTeste.toString(), "GET", params);
			

			Log.d("Todas as rádios: ", json.toString());

			try {

				int sucesso = json.getInt(TAG_SUCESSO);

				if (sucesso == 1) {

					radios = json.getJSONArray(TAG_RADIOS);


					for (int i = 0; i < radios.length(); i++) {
						JSONObject c = radios.getJSONObject(i);


						String id = c.getString(TAG_ID);
						String nome = c.getString(TAG_NOME);


						HashMap<String, String> map = new HashMap<String, String>();


						map.put(TAG_ID, id);
						map.put(TAG_NOME, nome);

						listaradios.add(map);
					}
				} else {

				}
			} catch (JSONException e) {
				e.printStackTrace();
			}

			return null;
		}

		protected void onPostExecute(String file_url) {
			pDialog.dismiss();
			runOnUiThread(new Runnable() {
				public void run() {
					ListAdapter adapter = new SimpleAdapter(ListaRadios.this, 
							listaradios, R.layout.lista_item_radios, 
							new String[] {TAG_ID, TAG_NOME},
							new int[] {R.id.id, R.id.nome});
					setListAdapter(adapter);
				}
			});
		}
	}
}

2 Respostas

Marky.Vasconcelos

Exception??

Se voce não consegue ver os logs pelo eclipse, vá até a pasta do ,android-sdk>/platform-tools e de um ./adb logcat

E

Caro Marky.Vasconcelos,

Desculpe eu resolvi hoje o problema eu ia postar aqui a solução.

O problema era que por algum motivo no dispositivo ele não acessava a url do Json. Consegui resolver trocando:

private static String url_radios = "Url para o php";

Por isso:

private static Uri url_radios = Uri.parse("Url para o php");
Criado 2 de março de 2013
Ultima resposta 4 de mar. de 2013
Respostas 2
Participantes 2