Android 仅在实际设备上发生错误。适用于所有模拟器

Android 仅在实际设备上发生错误。适用于所有模拟器,android,Android,我正在制作一个应用程序,其中在listView中显示一个在线收音机列表,该列表通过MySql在线数据库获得。我在所有版本的模拟器中测试了我的应用程序,效果很好。但在设备中,应用程序终止。当我通过usb连接时,不会关闭应用程序,但不会加载Json内容 通过usb连接设备后,调试不会为收音机充电 日志: 03-01 17:35:05.109: E/Buffer Error(2273): Error converting result java.lang.NullPointerException 03

我正在制作一个应用程序,其中在listView中显示一个在线收音机列表,该列表通过MySql在线数据库获得。我在所有版本的模拟器中测试了我的应用程序,效果很好。但在设备中,应用程序终止。当我通过usb连接时,不会关闭应用程序,但不会加载Json内容

通过usb连接设备后,调试不会为收音机充电

日志:

03-01 17:35:05.109: E/Buffer Error(2273): Error converting result java.lang.NullPointerException
03-01 17:35:05.109: E/JSON Parser(2273): Error parsing data org.json.JSONException: End of input at character 0 of 
代码如下:

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.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 to php mysql connection with";
    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) {       
        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(url_radios, "GET", params);

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

            try {
                // Checking for SUCCESS TAG
                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);
                }
            });
        }
    }
}
但如果我运行usb调试输出,则不会列出以下内容:

03-01 18:48:21.319: I/System.out(3717): Debugger has connected
03-01 18:48:21.319: I/System.out(3717): waiting for debugger to settle...
03-01 18:48:21.519: I/System.out(3717): waiting for debugger to settle...
03-01 18:48:21.719: I/System.out(3717): waiting for debugger to settle...
03-01 18:48:21.919: I/System.out(3717): waiting for debugger to settle...
03-01 18:48:22.119: I/System.out(3717): waiting for debugger to settle...
03-01 18:48:22.319: I/System.out(3717): waiting for debugger to settle...
03-01 18:48:22.519: I/System.out(3717): waiting for debugger to settle...
03-01 18:48:22.719: I/System.out(3717): waiting for debugger to settle...
03-01 18:48:22.919: I/System.out(3717): debugger has settled (1475)
03-01 18:48:23.699: W/System.err(3717): java.net.UnknownHostException: nsi.inf.br
03-01 18:48:23.709: W/System.err(3717):     at java.net.InetAddress.lookupHostByName(InetAddress.java:508)
03-01 18:48:23.709: W/System.err(3717):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:296)
03-01 18:48:23.719: W/System.err(3717):     at java.net.InetAddress.getAllByName(InetAddress.java:258)
03-01 18:48:23.719: W/System.err(3717):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:136)
03-01 18:48:23.719: W/System.err(3717):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
03-01 18:48:23.729: W/System.err(3717):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
03-01 18:48:23.739: W/System.err(3717):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:359)
03-01 18:48:23.739: W/System.err(3717):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
03-01 18:48:23.749: W/System.err(3717):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
03-01 18:48:23.749: W/System.err(3717):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
03-01 18:48:23.749: W/System.err(3717):     at com.nsistations.JSONParser.makeHttpRequest(JSONParser.java:62)
03-01 18:48:23.749: W/System.err(3717):     at com.nsistations.ListaRadios$LoadAllRadios.doInBackground(ListaRadios.java:120)
03-01 18:48:23.749: W/System.err(3717):     at com.nsistations.ListaRadios$LoadAllRadios.doInBackground(ListaRadios.java:1)
03-01 18:48:23.749: W/System.err(3717):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
03-01 18:48:23.749: W/System.err(3717):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
03-01 18:48:23.749: W/System.err(3717):     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
03-01 18:48:23.749: W/System.err(3717):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
03-01 18:48:23.759: W/System.err(3717):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
03-01 18:48:23.759: W/System.err(3717):     at java.lang.Thread.run(Thread.java:1019)
03-01 18:48:23.759: E/Buffer Error(3717): Error converting result java.lang.NullPointerException
03-01 18:48:23.759: E/JSON Parser(3717): Error parsing data org.json.JSONException: End of input at character 0 of 
您的设备无法访问nsi.inf.br,但模拟器(即您的工作站)可以


在工作站设置中检查设备的连接设置。检查它们是否在同一网络上,以及是否存在代理/防火墙问题。

仅供参考:onPostExecute在UI线程中运行。没有理由在那里使一个runnable。@dymmeh:我几乎可以肯定,如果我没记错的话,在某些情况下它会抛出异常。但我不太清楚我应该更改什么。你能给我举个例子让我测试一下吗?奇怪的是,它在模拟器上正常工作。代码在哪一行崩溃?
Log.d(“Todas as rádios:,json.toString())的输出是什么?您是否拥有正确的权限(通过usb和emulator,adb可以管理虚拟连接),我用输出日志编辑了上面的内容,但显示的日志是精确模拟的。当我在设备上运行时,仅显示这两条日志行。网络是一样的,同样的互联网设备。我使用wi-fi并尝试直接访问站点nsi.inf.br设备浏览器,访问正确。指向json的链接至少是直接的,答案是正确的。错误
解析数据org.json.JSONException:End of character 0 of…
的输入可能会在以下情况下发生:(a)json返回不是您期望的内容,或者(b)URL返回非json内容(例如http错误页面)。我建议以纯文本形式打印报税表,并相应地处理http错误代码。你是对的。正在访问url,我更改了:此:
private静态字符串url\u radios=”http://nsi.inf.br/nsistation/lista_radios.php";
by:
private静态Uri url\u radios=Uri.parse(“http://nsi.inf.br/nsistation/lista_radios.php");
现在运行良好。@EdersondosSantos您能告诉我您是否对
JSONObject json=jParser.makeHttpRequest(url_radios,“GET”,params)进行了任何更改吗语句
03-01 18:41:40.047: D/Todas as rádios:(594): {"sucesso":1,"radios":[{"site":"www.radiomiriam.com.br","id":"1","url_streaming":"http:\/\/69.64.48.96:9880\/","nome":"Radio Miriam","imagem":""},{"site":"www.clarimdopampa.com.br","id":"2","url_streaming":"http:\/\/70.36.96.25:9928\/","nome":"Radio Clarim do Pampa","imagem":""},{"site":"","id":"5","url_streaming":"http:\/\/189.76.158.139:50004\/","nome":"Itapema FM - RS","imagem":""}]}
03-01 18:48:21.319: I/System.out(3717): Debugger has connected
03-01 18:48:21.319: I/System.out(3717): waiting for debugger to settle...
03-01 18:48:21.519: I/System.out(3717): waiting for debugger to settle...
03-01 18:48:21.719: I/System.out(3717): waiting for debugger to settle...
03-01 18:48:21.919: I/System.out(3717): waiting for debugger to settle...
03-01 18:48:22.119: I/System.out(3717): waiting for debugger to settle...
03-01 18:48:22.319: I/System.out(3717): waiting for debugger to settle...
03-01 18:48:22.519: I/System.out(3717): waiting for debugger to settle...
03-01 18:48:22.719: I/System.out(3717): waiting for debugger to settle...
03-01 18:48:22.919: I/System.out(3717): debugger has settled (1475)
03-01 18:48:23.699: W/System.err(3717): java.net.UnknownHostException: nsi.inf.br
03-01 18:48:23.709: W/System.err(3717):     at java.net.InetAddress.lookupHostByName(InetAddress.java:508)
03-01 18:48:23.709: W/System.err(3717):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:296)
03-01 18:48:23.719: W/System.err(3717):     at java.net.InetAddress.getAllByName(InetAddress.java:258)
03-01 18:48:23.719: W/System.err(3717):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:136)
03-01 18:48:23.719: W/System.err(3717):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
03-01 18:48:23.729: W/System.err(3717):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
03-01 18:48:23.739: W/System.err(3717):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:359)
03-01 18:48:23.739: W/System.err(3717):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
03-01 18:48:23.749: W/System.err(3717):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
03-01 18:48:23.749: W/System.err(3717):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
03-01 18:48:23.749: W/System.err(3717):     at com.nsistations.JSONParser.makeHttpRequest(JSONParser.java:62)
03-01 18:48:23.749: W/System.err(3717):     at com.nsistations.ListaRadios$LoadAllRadios.doInBackground(ListaRadios.java:120)
03-01 18:48:23.749: W/System.err(3717):     at com.nsistations.ListaRadios$LoadAllRadios.doInBackground(ListaRadios.java:1)
03-01 18:48:23.749: W/System.err(3717):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
03-01 18:48:23.749: W/System.err(3717):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
03-01 18:48:23.749: W/System.err(3717):     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
03-01 18:48:23.749: W/System.err(3717):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
03-01 18:48:23.759: W/System.err(3717):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
03-01 18:48:23.759: W/System.err(3717):     at java.lang.Thread.run(Thread.java:1019)
03-01 18:48:23.759: E/Buffer Error(3717): Error converting result java.lang.NullPointerException
03-01 18:48:23.759: E/JSON Parser(3717): Error parsing data org.json.JSONException: End of input at character 0 of 
java.net.UnknownHostException: nsi.inf.br