Приложение не может быть удалено при наличии нескольких точек входа - PullRequest
1 голос
/ 22 августа 2011

РЕДАКТИРОВАТЬ: Использование более простого кода. У меня есть приложение Blackberry, которое до недавнего времени (я обновил до 6.0.0.600 на моем факеле) можно было удалить. Теперь я не могу, даже если я использую javaloader -u erase (используемый модуль) и контекстное меню пользовательского интерфейса или физическое меню не имеет возможности удалить. Приведенный ниже код просто требует дескриптора приложения с альтернативной точкой входа при запуске с параметрами «startVibrate». Код точки входа указан ниже.

   package mypackage;

import net.rim.device.api.system.Alert;
import net.rim.device.api.system.ApplicationDescriptor;
import net.rim.device.api.system.ApplicationManager;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.UiApplication;

/**
 * This class extends the UiApplication class, providing a
 * graphical user interface.
 */

public class ScheduleAppDemo extends UiApplication
{
    public static void main(String[] args)
    {
        if (args != null && args.length > 0 && "startVibrate".equals(args[0]))
        {
            scheduleVibrate();
        }
        else
        {
            ScheduleAppDemo app = new ScheduleAppDemo();
            app.enterEventDispatcher();
        }
    }
    public ScheduleAppDemo()
    {
        ScheduleAppDemoScreen screen = new ScheduleAppDemoScreen();
        pushScreen(screen);
    }

    public class ScheduleAppDemoScreen extends MainScreen
    {
        public ScheduleAppDemoScreen()
        {
            setTitle("Schedule app demo");
        }
    }   

    private static void scheduleVibrate()
    {
        Alert.startVibrate(2550);
        ApplicationDescriptor current = ApplicationDescriptor.
        currentApplicationDescriptor();
        current.setPowerOnBehavior(ApplicationDescriptor.DO_NOT_POWER_ON);
        ApplicationManager manager = ApplicationManager.getApplicationManager();
        manager.scheduleApplication(current, System.currentTimeMillis() 
                + 60000, true);
    }
}

По сути, это показывает, что он вибрирует каждую минуту. К сожалению, свидетельства говорят, что, по-видимому, диспетчер приложений поддерживает фоновый процесс во время выполнения, а затем просто вызывает его снова, когда приходит время запуска. Это пример приложения от RIM. Удаление всех альтернативных точек входа в приложении descriptor.xml позволяет удалить приложение. Кроме изменения этого, перезагрузки трески, а затем ее удаления; как я могу удалить приложение.

1 Ответ

1 голос
/ 22 августа 2011

Поведение является «правильным», поскольку именно так должно вести себя приложение с альтернативной точкой входа в поле.

Когда приложение имеет альтернативную точку входа, удаление ее помечает только для удаления. Фактическое удаление происходит при перезапуске устройства и перезагрузке .cods.

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

Пока устройство не будет перезагружено, фоновый процесс будет продолжаться.

...