Android заставить закрыть проблему? - PullRequest
0 голосов
/ 06 мая 2011

У меня проблемы с приложением для 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 голосов
/ 07 мая 2011

На самом деле, я понял это. Оказывается, когда я обращался к сайту, YouTube давал мне их мобильную версию сайта. Мне просто нужно было добавить & nomobile = 1 к URL. В любом случае, спасибо.

0 голосов
/ 06 мая 2011

Сначала мне нужно было добавить следующую строку в мой 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 - ваш лучший друг!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...