Вызов номеров из строк разобранного XML в приложении для Android - PullRequest
0 голосов
/ 22 августа 2011

У меня есть приложение для Android, которое анализирует строки из этого веб-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 Ответ

2 голосов
/ 22 августа 2011

Возможно getCharacterDataFromElement (строка) не возвращает правильные данные. Я не нашел эту функцию, поэтому заменил ее на 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))));
...