从Android应用程序中的解析XML字符串调用数字

时间:2011-08-22 18:21:16

标签: android dom xml-parsing arrays

我有一个Android应用程序,它解析来自this web URL的字符串并将它们存储到一个名为phoneNumberList的数组中。然后,当时间到了,手机的拨号器将被启动,随身携带该电话号码。问题是,拨号器显示空白。有什么想法吗?

这是解析XML文件并将其存储在数组中的代码:

    try {
            URL url = new URL("http://dl.dropbox.com/u/38725067/webexample/Site%203/index.xml");
            URLConnection conn = url.openConnection();

            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse(conn.getInputStream());

            NodeList nodes = doc.getElementsByTagName("phone");
            for (int i = 0; i < nodes.getLength(); i++) {
                Element element = (Element) nodes.item(i);

                NodeList title = element.getElementsByTagName("string");
                Element line = (Element) title.item(0);
                phoneNumberList[i] = getCharacterDataFromElement(line);


            }
    }

...这是启动拨号器的代码:

    public void launchDialer(String number){
        String numberToDial = "tel:"+number;
        startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(numberToDial)));
    }

    public void onClick(View v) {
        String numberToCall = "0";
        switch (v.getId()) {
        case R.id.police_button1:
            numberToCall = Main.phoneNumberList[0];
            launchDialer(numberToCall);
            break;
        case R.id.police_button2:
            launchDialer(Main.phoneNumberList[1]);
            break;

        }
    }

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

注1:在URL中,您会看到我尝试了两种电话号码格式:一种是破折号,一种是没有;没有工作。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

注意2:在后面的代码片段中,您可以看到我尝试了两种不同的方式来调用该号码:一个使用字符串numberToCall,另一个不使用字符串;没有工作。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

感谢您提前获取任何帮助 -

迈克盖茨

1 个答案:

答案 0 :(得分:2)

可能 getCharacterDataFromElement(line)未返回正确的数据。我没有找到这个函数所以我用 line.getTextContent()

替换它

此外,您的阵列也可能存在问题。我建议使用 ArrayList 。添加新项目时,此结构会自动调整大小。示例代码:

// global definition
private ArrayList<String> phoneNumberList = new ArrayList<String>();

// parsing numbers
NodeList nodes = doc.getElementsByTagName("phone");
for (int i = 0; i < nodes.getLength(); i++) {
    Element element = (Element) nodes.item(i);
    NodeList title = element.getElementsByTagName("string");
    Element line = (Element) title.item(0);
    phoneNumberList.add(line.getTextContent());
}

// calling number #0
startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"+phoneNumberList.get(0))));