Android力量关闭问题?

时间:2011-05-06 03:50:15

标签: java android mobile

我的Android应用程序遇到了一些麻烦。 每当我输入时,应用程序似乎都会强制关闭:

String fileContents = getFileContents("http://www.youtube.com/watch?v="+code);
    fileContents = fileContents.substring(fileContents.indexOf("\'VIDEO_ID\': "+"\""+code+"\""),fileContents.indexOf("yt.setMsg({"));
    String[] settings = fileContents.split("fmt_url_map");
    settings = settings[settings.length-1].split("\"");
    String map = settings[2];
    map = map.replace("\\/", "/").replace("\\u0026", "&");
    fmtMap = map.split("[,|]+");
    hash = new HashMap<Integer, String>();
    for(int i = 0; i< fmtMap.length/2; i ++) {
        hash.put(new Integer(Integer.parseInt(fmtMap[2*i])),fmtMap[2*i+1]);
    }

我的getFileContents()函数是:

public static String getFileContents(String path) {
    InputStreamReader instream = null;
    URL url = null;
    URLConnection urlConn = null;
    try {
        url = new URL(path);
        try {
            urlConn = url.openConnection();
            instream = new InputStreamReader(urlConn.getInputStream());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    String separator = System.getProperty("line.separator");
    StringBuffer contents = new StringBuffer();
    try {
        BufferedReader f = new BufferedReader(instream);
        try {
            String line = null;
            while((line = f.readLine()) != null) {
                contents.append(line);
                contents.append(separator);
            }
        }
        finally {
            f.close();
        }
    }
    catch (IOException ex) {
        System.out.println(ex.toString());
    }
    String text = contents.toString();
    return text;
}

我怀疑它不起作用,因为我直接从我的一个Java项目中复制了它,但我不明白为什么。

如果有人可以提供帮助,那就太好了! :d

2 个答案:

答案 0 :(得分:0)

我首先需要在AndroidManifest.xml中添加以下行:

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

添加此行后,getFileContents(String path)方法返回了一个HTML字符串。

fileContents.substring来电会在此行引发StringIndexOutOfBoundsException

fileContents = fileContents.substring(fileContents.indexOf("\'VIDEO_ID\':     "+"\""+code+"\""),fileContents.indexOf("yt.setMsg({"));

表达式fileContents.indexOf("yt.setMsg({")返回 -1 ,而其他indexOf调用也可能返回 -1

诊断这些问题Logcat is your best friend!

答案 1 :(得分:0)

实际上,我想通了。 事实证明,当我查询网站时,YouTube正在向我提供该网站的移动版本。我只需要在URL中添加&amp; nomobile = 1。 不过,不管怎样,谢谢。