Sony: SampleNotificationExtension: примеры исключений, вызывающих приложения

Я пытаюсь отправить уведомления на устройства Sony LiveWare

Я установил: com.sonyericsson.extras.liveware.extension.notificationsample, но при попытке его запустить получаю ошибки и исключения:

  1. Загрузите действие предпочтения на устройство
  2. Установите флажок «Активно» на экране настроек.

В SampleExtensionService вызывается следующий метод:

private void addData() {
    Random rand = new Random();
    int index = rand.nextInt(5);
    String name = NAMES[index];
    String message = MESSAGE[index];
    long time = System.currentTimeMillis();
    long sourceId = NotificationUtil
            .getSourceId(this, EXTENSION_SPECIFIC_ID);
    if (sourceId == NotificationUtil.INVALID_ID) {
        Log.e(LOG_TAG, "Failed to insert data");
        return;
    }
    String profileImage = ExtensionUtils.getUriString(this,
            R.drawable.widget_default_userpic_bg);

    ContentValues eventValues = new ContentValues();
    eventValues.put(Notification.EventColumns.EVENT_READ_STATUS, false);
    eventValues.put(Notification.EventColumns.DISPLAY_NAME, name);
    eventValues.put(Notification.EventColumns.MESSAGE, message);
    eventValues.put(Notification.EventColumns.PERSONAL, 1);
    eventValues.put(Notification.EventColumns.PROFILE_IMAGE_URI, profileImage);
    eventValues.put(Notification.EventColumns.PUBLISHED_TIME, time);
    eventValues.put(Notification.EventColumns.SOURCE_ID, sourceId);

    try {
        getContentResolver().insert(Notification.Event.URI, eventValues);
    } catch (IllegalArgumentException e) {
        Log.e(LOG_TAG, "Failed to insert event", e);
    } catch (SecurityException e) {
        Log.e(LOG_TAG, "Failed to insert event, is Live Ware Manager installed?", e);
    } catch (SQLException e) {
        Log.e(LOG_TAG, "Failed to insert event", e);
    }
}

Первая проблема заключается в том, что "long sourceId = NotificationUtil.getSourceId(this, EXTENSION_SPECIFIC_ID)" возвращает -1

Я не знаю, как изменить, но в документах говорится, что это необязательное поле. Поэтому я удалил его, чтобы посмотреть, смогу ли я получить что-то еще:

При удалении кода sourceId я получаю исключение при вызове вставки: «java.lang.SecurityException: у вас недостаточно прав для выполнения вставки»

Моя среда: HTC One V в паре с наручным пейджером LiveView http://www.amazon.co.uk/Sony-Ericsson-0001516170-LIVE-VIEW/dp/B00477X6DA У меня установлены следующие приложения LiveView SmartConnect (LiveWare Manager)

Я был бы признателен за любую помощь в том, чтобы заставить этот образец работать, или если кто-нибудь знает более прямой подход к созданию простых текстовых уведомлений для LiveWare.

РЕДАКТИРОВАТЬ: Достигнут некоторый прогресс. Нашел эмулятор здесь: android-sdk\add-ons\addon-sony_add-on_sdk

private void addData() {
    Random rand = new Random();
    int index = rand.nextInt(5);
    String name = NAMES[index];
    String message = MESSAGE[index];
    long time = System.currentTimeMillis();
    long sourceId = NotificationUtil
            .getSourceId(this, EXTENSION_SPECIFIC_ID);
    if (sourceId == NotificationUtil.INVALID_ID) {
        Log.e(LOG_TAG, "Failed to insert data");
        return;
    }
    String profileImage = ExtensionUtils.getUriString(this,
            R.drawable.widget_default_userpic_bg);

    ContentValues eventValues = new ContentValues();
    eventValues.put(Notification.EventColumns.EVENT_READ_STATUS, false);
    eventValues.put(Notification.EventColumns.DISPLAY_NAME, name);
    eventValues.put(Notification.EventColumns.MESSAGE, message);
    eventValues.put(Notification.EventColumns.PERSONAL, 1);
    eventValues.put(Notification.EventColumns.PROFILE_IMAGE_URI, profileImage);
    eventValues.put(Notification.EventColumns.PUBLISHED_TIME, time);
    eventValues.put(Notification.EventColumns.SOURCE_ID, sourceId);

    try {
        getContentResolver().insert(Notification.Event.URI, eventValues);
    } catch (IllegalArgumentException e) {
        Log.e(LOG_TAG, "Failed to insert event", e);
    } catch (SecurityException e) {
        Log.e(LOG_TAG, "Failed to insert event, is Live Ware Manager installed?", e);
    } catch (SQLException e) {
        Log.e(LOG_TAG, "Failed to insert event", e);
    }
}
0-sony-16\apk_files

Я установил это на телефон. «SampleExtensionService» отлично работает в эмуляторе.

Теперь я предполагаю, что образец надстройки несовместим с устройством LiveView.


person user2848329    schedule 04.10.2013    source источник
comment
Считается ли LiveView SmartWatch?   -  person weston    schedule 05.10.2013
comment
Я пометил его как SmartWatch, потому что у меня недостаточно баллов, чтобы пометить его как LiveWare. Насколько я понимаю, и Sony SmartWatch, и LiveView Pager используют LiveWare. Я предполагал, что если я смогу отправить уведомление на устройство LiveView, оно также будет работать для Sony SmartWatch. В любом случае образец не работает с устройством LiveView.   -  person user2848329    schedule 05.10.2013


Ответы (1)


К сожалению, LiveView не поддерживается API SmartExtension. Вместо этого есть специальный комплект разработчика для LiveView здесь .

Если в будущем вы купите новое носимое устройство у Sony Mobile, расширение уведомлений, основанное на API Smart Extension, можно будет использовать для нескольких устройств, включая SmartWatch, SmartWatch 2, SBH50, SBH52 и т. д.

person Jerker    schedule 07.10.2013