Странная проблема Blackberry - новая сборка, неожиданно запрашивающая доступ - PullRequest
0 голосов
/ 25 июня 2009

Во время тестирования моего приложения в процессе разработки я столкнулся со странной проблемой, когда новые сборки (сборка 2.0) с той же самой базой кода неожиданно по умолчанию разрешают (вместо того, чтобы разрешать при установке) разрешения по умолчанию (оператор интернет, GPS). *

Подробности - Та же кодовая база
Таким образом, существует две сборки с одинаковой кодовой базой. Сборка 1.0 была сделана / подписана на прошлой неделе. Сборка 2.0 была сделана / подписана вчера. Если я установлю Build 1.0, никаких проблем с начальными разрешениями (все разрешено). Но при установке Build 2.0 те же разрешения (интернет-провайдер, gps) устанавливаются как Prompt.

Вопросы
Приложение делает запросы gps и данных, и я понимаю, что для некоторых конфигураций телефона требуются права доступа, но зачем вдруг для них нужна сборка, для которой ранее не требовались разрешения (сборка 1.0) (сборка 2.0)?

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

1 Ответ

3 голосов
/ 27 июня 2009

Возможно, вы сделали что-то на своем устройстве между 1.0 и 2.0, что могло бы вызвать это, например, включение брандмауэра?

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

Возможно, вы захотите попробовать вставить следующий фрагмент кода в инициализацию вашего приложения, чтобы взглянуть на то, какие настройки фактически установлены:

ApplicationPermissionsManager apm = ApplicationPermissionsManager.getInstance();
ApplicationPermissions permissions = apm.getApplicationPermissions();
int[] keys = permissions.getPermissionKeys();
for (int i = 0; i < keys.length; i++) {
    int key = keys[i];
    System.out.println("APM: " + key + " = " +
        permissionToString(permissions.getPermission(key)));
}

и

public String permissionToString(int value) {
    switch(value) {
        case ApplicationPermissions.VALUE_ALLOW:
            return "ALLOW";
        case ApplicationPermissions.VALUE_PROMPT:
            return "PROMPT";
        case ApplicationPermissions.VALUE_DENY:
            return "DENY";
        case -1:
            return "NOT_SET";
        default:
            return Integer.toString(value);
    }
}

Программа "applicationpermissionsdemo" в каталоге примеров JDE имеет хороший пример запроса разрешений приложения и запроса изменений разрешений приложения у самого приложения.

...