Uri.toString () возвращает ссылку вместо String - PullRequest
3 голосов
/ 11 августа 2011

При попытке выполнить этот код в Android Activity:

Uri testurl = Uri.parse("http://www.google.com");
Log.v("HTTPGet", "testurl.toString == " + testurl.toString());

единственный вывод в Logcat - это ссылка на строку, но не сама строка:

HTTPGet(23045): testurl.toString == [Landroid.net.Uri;@4056e398

Как мне распечатать фактическую строку?

Ответы [ 2 ]

5 голосов
/ 11 августа 2011

Вызовите getEncodedPath () в Uri, чтобы получить строку в нем.

Примерно так:

// imageUri is an Uri extracted from Intent 
String filePath = imageUri.getEncodedPath();

Этот filePath будет иметь строковое содержимое, как определено в Uri.т.е. содержимое: / media ... / id

Shash

4 голосов
/ 11 августа 2011

ОРИГИНАЛЬНЫЙ ОТВЕТ (поцарапайте)

Uri.toString выдает описание объекта URI из класса Uri.

Документация здесь: http://developer.android.com/reference/android/net/Uri.html

Чтобы получить удобочитаемую версию, вызовите методы получения, определенные для класса.

НАСТОЯЩИЙ ОТВЕТ

ОП уточнил и предоставил фактический код. Вот фактический контекст:

@Override
protected Document doInBackground(Uri... arg0) {
    Document ret = null;
    Log.v("HTTPGet", "Uri.toString == " + arg0.toString());
    try {
        ret = Jsoup.connect(arg0.toString()).get();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return ret;
}

Здесь происходит то, что параметр arg0 имеет тип Uri[], а именно массив Uri . Синтаксис точка-точка-точка - это «переменные» Java. Это означает, что параметр на самом деле является массивом, но вместо передачи массива в вызове вы можете передать любое количество аргументов, которые Java будет объединять в массив.

Поскольку вы используете стороннюю библиотеку, вы должны переопределить этот метод, который принимает один или более Uris. Вы предполагаете, что будет использоваться только один. Если это так, вы должны вместо этого написать

Log.v("HTTPGet", "Uri.toString == " + arg0[0].toString());

Если вы действительно будете обрабатывать несколько Uris, используйте цикл for, чтобы пройти и зарегистрировать все из них.

Обязательно исправьте и строку Jsoup.connect. Это не хочет грязную строку массива. :)

...