我有一个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
,另一个不使用字符串;没有工作。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
感谢您提前获取任何帮助 -
迈克盖茨答案 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))));