当前位置: 首页 > 知识库问答 >
问题:

Android XML阅读器出错

殳俊
2023-03-14

我有一个工作正常的XML解析器,但如果用户连接到一个不浏览应用程序的网络,该应用程序就会中断。要放一个函数来检测用户是否连接,但是上面提到的问题,用户会连接但是没有浏览。

我的代码全文如下:

public void chamaParser(){
    Boolean conected = Conectado(this);
    if(conected == true){
        new DoInBackground().execute();
    } else {
        mPullRefreshListViewRSS.onRefreshComplete();
        new AlertDialog.Builder(PullToRefreshListActivityRSS.this)
                .setTitle("Alerta!")
                .setMessage("Não foi possível estabelecer uma conexão com a Internet, verifique sua rede ou tente novamente mais tarde.")
                .setNeutralButton("OK", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {}
        }).show();
    }
}

public void do_update() {
    RssParser.parse();
}

public static boolean Conectado(Context context) {
    try {
        ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        String LogSync = null;
        String LogToUserTitle = null;
        if (cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected()) {
            LogSync += "\nConectado a Internet 3G ";
            LogToUserTitle += "Conectado a Internet 3G ";
            return true;
        } else if(cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) {
            LogSync += "\nConectado a Internet WIFI ";
            LogToUserTitle += "Conectado a Internet WIFI ";
            return true;
        } else {
            LogSync += "\nNão possui conexão com a internet ";
            LogToUserTitle += "Não possui conexão com a internet ";
            return false;
        }
    } catch (Exception e) {
        return false;
    }
}

private class DoInBackground extends AsyncTask<Void, Void, Void> implements DialogInterface.OnCancelListener {
    private ProgressDialog dialog;

    protected void onPreExecute() {
        //dialog = ProgressDialog.show(PullToRefreshListActivityRSS.this, "", "Carregando...", true);
        dialog = ProgressDialog.show(PullToRefreshListActivityRSS.this, "", "Carregando...", true, true, new DialogInterface.OnCancelListener(){
                @Override
                public void onCancel(DialogInterface dialog) {
                    mPullRefreshListViewRSS.onRefreshComplete();
                    DoInBackground.this.cancel(true);
                    // finish();
                }
        });
    }

    protected Void doInBackground(Void... unused) { 
        PodcastAdapterRSS.topBarRSS=true;

        do_update(); 
        return null; 
    }

解析器XML:

public class RssParser {

    public static void parse() {
        URL url;
        try {
            url = new URL("http://www.xxxx.com.br/feed/");
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();

            if(conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                DocumentBuilder db = dbf.newDocumentBuilder();
                Document doc;
                doc = db.parse(url.openStream());
                doc.getDocumentElement().normalize();
                NodeList itemLst = doc.getElementsByTagName("item");
                arrays.Title = new String[itemLst.getLength()];
                arrays.Link = new String[itemLst.getLength()];
                arrays.Description = new String[itemLst.getLength()];
                // arrays.PodcastMedia = new String[itemLst.getLength()];

                for(int i=0; i < itemLst.getLength(); i++){

                    Node item = itemLst.item(i);
                    if(item.getNodeType() == Node.ELEMENT_NODE){
                        Element ielem = (Element)item;
                        NodeList title = ielem.getElementsByTagName("title");
                        NodeList link = ielem.getElementsByTagName("link");
                        //NodeList description = ielem.getElementsByTagName("description"); 
                        NodeList content = ielem.getElementsByTagName("description");
                        //   NodeList media = ielem.getElementsByTagName("media:content");

                        //    String mediaurl = media.item(0).getAttributes().getNamedItem("url").getNodeValue();

                          arrays.Title[i] = title.item(0).getChildNodes().item(0).getNodeValue();
                          arrays.Link[i] = link.item(0).getChildNodes().item(0).getNodeValue();
                          arrays.Description[i] = content.item(0).getChildNodes().item(0).getNodeValue();

                    }
                }
            }

        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (DOMException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

07-30 15:20:48.319:W/System.err(10997):java.net.unknownHostException:www.xxxx.com.br 07-30 15:20:48.319:W/System.err(10997):at java.net.inetAddress.lookupHostByName(inetAddress.java:508)07-30 15:20:48.319:W/System.err(10997):at java.net.inetAddress.getAllByNameImpl(inetAddress.java:296)07-30 ress.java:258)07-30 15:20:48.319:W/System.err(10997):at org.apache.harmony.luni.internal.net.www.protocol.http.nection.(httpconnection.java:69)07-30 15:20:48.319:W/System.err(10997):at org.apache.harmony.luni.internal.net.www.protocol.httpconnection.java:322)07-30 15:20:48.319:W/System.err(10997):at org.apache.harmony.luni.internal.net.www.protocol.http.httpConnectionPool.get(httpConnectionPool.java:89)07-30 15:20:48.319:W/system.err(10997):at org.apache.harmony.luni.internal.net.www.protocol.http.httpurlconnectionimpl.gethttpConnection(httpurlconnectionimpl.java:285)07-30 15:20:48.319:W/system.err(10997):at org.apache.harmony.luni.internal.net.www.protocol.http.httpurlconnectionimpl.java:285)(httpurlconnectionimpl.java:1018)07-30 15:20:48.319:W/system.err(10997):at org.apache.harmony.luni.internal.net.www.protocol.http.httpurlconnectionimpl.getresponseCode(httpurlconnectionimpl.java:726)07-30 15:20:48.329:W/system.err(10997):at tabbar.rss.rssparser.parse(rssparser.java:30)07-30 91)07-30 15:20:48.329:W/System.err(10997):at tabbar.rss.pulltoRefreshListActivityrss$doinbackground.doinbackground(PullTo)refreshlistactivityrss.java:205)07-30 15:20:48.329:W/system.err(10997):at tabbar.rss.pulltorefreshlistactivityrss$doinbackground.doinbackground(pulltorefreshlistactivityrss.java:1)07-30 15:20:48.329:W/system.err(10997):at android.os.asynctask$2.调用(asynctask.java:185)07-30:20:48.329:W/System.err(10997):at java.util.concurrent.futureTask.run(FutureTask.java:138)07-30 15:20:48.329:W/System.err(10997):at java.util.concurrent.ThreadPoolExecutor.runworker(ThreadPoolExecutor.java:1088)07-30 15:20:48.329:W/System.err(10997):at.thread.run(thread.java:1019)07-30 15:20:48.329:W/DalvikVM(10997):ThreadId=1:线程因未捕获异常而退出(Group=0x401FC560)07-30 15:20:48.339:E/AndroidRuntime(10997):致命异常:main 07-3015:20:48.339:E/AndroidRuntime(10997):java.lang.nullPointerException 07-30 15:20:48.339:E/AndroidRuntime(10997):at tabbar.rss.pulltoRefreshListActivityrss.populate_ListView(PulltoRefreshListActivityrss.java:101)07-30 15:20:48.339:E/AndroidRuntime(10997):at tabbar.rss.pulltoRefreshListActivityRSS$doinbackground.onPostExecute(PulltoRefreshListActivityRSS.java:1)07-30 15:20:48.339:e/androidRuntime(10997):at android.os.asynctask.finish(Asynctask.java:417)07-30 15:20:48.339:e/androidRuntime(10997):at android.os.asynctask.Access$300(Asynctask.java:127)07-30.HandleMessage(Asynctask.java:429)07-30 15:20:48.339:e/AndroidRuntime(10997):at Android.os.handler.dispatchMessage(handler.java:99)07-30 15:20:48.339:e/AndroidRuntime(10997):at Android.os。looper.loop(looper.java:130)07-30 15:20:48.339:e/androidruntime(10997):at android.app.activitythread.main(activitythread.java:3689)07-30 15:20:48.339:e/androidruntime(10997):at java.lang.reflect.Method.invokenative(原生方法)07-30 15:20:48.339:e/androidruntime(10997):at zygoteinit$methodandargscaller.run(zygoteinit.java:875)07-30 15:20:48.339:e/androidruntime(10997):at com.android.internal.os.zygoteinit.main(zygoteinit.java:633)07-30 15:20:48.339:e/androidruntime(10997):at dalvik.system.nativestart.main(本机方法)

共有1个答案

齐昆
2023-03-14

尝试将其添加到您的清单中:

<uses-permission android:name="android.permission.INTERNET" />

如果这不起作用,请查阅以下两个问题的答案:

UnknownHostException:主机未解析

 类似资料:
  • 在问题[1]中,我了解到如果您想在Android下使用NFC标签,则不必采用NDEF格式。我想在Win 8.1 in. Net下执行此操作。我的情况是这样的: 我有一个RFID卡Mifare Classic 1K,其中存储了一个ID。(由制造商记录)该ID由我们的考勤系统通过通常的RFID读取器(例如Gigatek的PROMAG MFR120)读取。我们不在卡上写任何东西,我们只需要读取ID。但是

  • RSS 阅读器用于读取 RSS feed! RSS 阅读器可供许多不同的设备和操作系统使用。 RSS 阅读器 有很多不同的 RSS 阅读器。某些以 web services 的形式来工作,而某些则运行于 windows (或 Mac、PDA 或 UNIX)。 这是一些我尝试过并钟爱的阅读器: 这是一些我尝试过并钟爱的阅读器: RSS 阅读器 有很多不同的 RSS 阅读器。某些以 web servi

  • Android PDF Viewer 是Android平台下的PDF阅读器。

  • 实现简单的阅读器功能。包括首页的书架,滑动书架界面可以切换书架。点击书架上的书籍之后,进入阅读界面,有翻页的动画效果。可以加载显示txt文件。 [Code4App.com]

  • 一款全部开源的rss阅读器,界面简单,功能强大! 采用的是.net+jquery实现,代码大小只有55k,配置要求只要支持.net2.0和iis服务就可以! 简介:由于安全问题,浏览器没有足够的权限来操作远程的xml,所以不得不借助服务器端来实现,所以提供了RssServer来解析xml,然后直接显示出来,再有jquery来操作配合css来显示,思路就是这样! 最后的效果:

  • 我有以下类,它从/到包裹读取和写入对象数组: 在上面的代码中,我在读取< code>readParcelableArray时得到一个< code>ClassCastException: 错误/AndroidRuntime(5880):原因:Java . lang . classcastexception:[land roid . OS . parcelable; 上面的代码有什么错误?在编写对象数

  • 问题内容: 我有一个UTF-16 CSV文件,我必须阅读。Python csv模块似乎不支持UTF-16。 我正在使用python 2.7.2。我需要解析的CSV文件很大,要运行几个GB的数据。 回答以下约翰·马钦(John Machin)的问题 使用仅包含abc作为内容的test.csv输出 我认为csv文件是在美国Windows机器上创建的。我正在使用Mac OSX Lion。 如果我使用ph

  • 问题内容: Java的默认编码为。是?(请参见下面的编辑) 当文本文件被编码为?读者如何知道自己必须使用? 我谈论的读者是: s 来自的s 一个从 … 轮到我们,编码取决于操作系统,这意味着以下内容并非在每个操作系统上都适用: 问题答案: 读者如何知道他必须使用UTF-8? 通常你指定 你自己 的一个。它有一个采用字符编码的构造函数。例如 所有其他读者(据我所知)都使用平台默认字符编码,这实际上可