2011-08-22 41 views
0

我有一个Android应用程序解析来自this web URL字符串并将它们存储到一个数组称为phoneNumberList。然后,在时机成熟时,手机的拨号器推出,携带着那个电话号码。问题是,拨号器显示空白。任何想法为什么?主叫号码从已解析的XML字符串中的Android应用程序

这里是我的代码来解析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,一个没有串一个;既没有工作。

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

谢谢你在先进的任何和所有帮助 -

迈克·盖茨

+0

您是否检查过phoneNumberList是否包含正确的数据?它是否包含电话号码? –

+0

我最初将包含电话号码的代码片段作为Java应用程序运行,并且工作正常。它确实包含了数字。但是,它不希望包含此Android应用程序中的数字。 – Mxyk

回答

2

也许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)))); 
+0

这看起来不错 - 当我到达我的Mac明天时,我会尝试它,并让你知道它是如何工作的。 (至于现在,我会同意你的答案也一样)。 – Mxyk

+0

它的工作原理!非常感谢你 :)。 – Mxyk