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);
}
});
}
}
}