Стекло: исключение нулевого указателя при попытке добавить изображение на статическую карту

У меня есть простое приложение Glass, использующее GDK для захвата текста и фотографирования. Я могу легко создать LiveCard с текстом и фотографией, однако, когда я пытаюсь преобразовать живую карту в статическую карту, я получаю исключение нулевого указателя, когда пытаюсь добавить изображение на карту. вот фрагмент моего кода. Если я удаляю вызов addImage(), он отлично отправляет карту.

        Card c = new Card(CompPlayerService.this);
        c.setText("you took a picture of " + MyService.this.personName);
        Uri uri = Uri.parse(picturePath); 
        c.addImage( uri);  //<-- this is throwing the NPE
        timelineManager.insert(c);

Когда я устанавливаю точку останова в службе, я вижу, что значение picturePath НЕ равно нулю и это тот же самый путь, который я использую, когда публикую фотографию на живой открытке из той же службы, которая работает нормально. вот исключение, которое я получаю:

02-17 15:32:25.049  14120-14120/com.example.glassapp E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NullPointerException
            at com.google.android.glass.app.Card.addImage(Card.java:176)

person Ben    schedule 17.02.2014    source источник
comment
Вы неправильно читаете трассировку стека. NPE находится внутри метода addImage для класса Card, не в этой строке кода, а на одну глубже. Card.java строка 176, вам нужно посмотреть на этот код. Я предполагаю, что URI не указывает на действительное изображение.   -  person cistearns    schedule 18.02.2014
comment
Тогда почему точно такой же образ работает на живой карте?   -  person Ben    schedule 18.02.2014
comment
Без понятия. Вот почему я не предложил ответ, только то, что NPE на самом деле не в вашем коде, а на один уровень глубже. И поскольку удаление строки работает, можно только предположить, что это что-то, по крайней мере, косвенно связанное с uri. Может быть, выведите uri.toString, чтобы мы могли его увидеть, это может дать кому-то еще идею?   -  person cistearns    schedule 18.02.2014


Ответы (1)


Каково значение picturePath? Я предполагаю, что вы передаете простой путь к файловой системе вместо действительного file: URI.

Вы можете рассмотреть возможность использования метода Uri.fromFile вместо Uri.parse, чтобы правильно обработать это.

ОБНОВЛЕНИЕ: класс Card больше не поддерживает вызов addImage с аргументом Uri. Вместо этого загрузите изображение в Bitmap и вызовите addImage(Bitmap).

person Tony Allevato    schedule 18.02.2014
comment
круто, получилось! заставляет меня задаться вопросом Uri.parse, хотя... кажется, что это тоже должно работать... - person Ben; 18.02.2014