Убить приложение / пакет в API 8 (Froyo) - PullRequest
1 голос
/ 01 июня 2010

У меня есть функция уничтожения приложений в одном из моих приложений, но до API 7 я всегда работал с restartPackage (String PackageName); но, поскольку API 8 устарел, я попробовал killBackgroundProcesses (String PackageName); но это тоже не сработало.

Оба эти метода находятся в ActivityManager class

Я надеюсь, что кто-то может мне помочь.

Ответы [ 2 ]

1 голос
/ 18 июня 2010

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

В документации SDK говорится о том, почему разрешение restartPackages устарело:

"Теперь это просто оболочка для killBackgroundProcesses (String); предыдущее поведение здесь больше не доступно для приложений, поскольку позволяет им нарушать работу других приложений, удаляя их тревоги, останавливая их службы и т. Д."

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

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

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


EDIT:

Лучшее, что я смог придумать, - это добавить возможность предоставить решение в один клик, перейти на страницу Информация о приложении системы для данного приложения. Ниже приведен пример кода, который я использую в своем приложении:

    public Intent getManagePkgIntent(String pkgName)
    {
        int osVersion = AppMode.getAndroidVersion();

        Intent intent = new Intent();
        if (osVersion > AppMode.FROYO_SDK_VERSION)
        {
            //Settings.ACTION_APPLICATION_DETAILS_SETTINGS - THIS CONSTANT ISN'T AVAILABLE UNTIL COMPILING WITH 2.3
            intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
            intent.setData(Uri.fromParts("package", pkgName, null));
            return intent;
        }
        else //FROYO And Older...
        {
            intent.setAction(Intent.ACTION_VIEW);
            intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");

            String pkgExtra = (osVersion != AppMode.FROYO_SDK_VERSION) ? "com.android.settings.ApplicationPkgName" : "pkg"; 
            intent.putExtra(pkgExtra, pkgName);
        }

        if (m_pkgMgr.resolveActivity(intent, 0) == null)
            return null;

        return intent;
    }

AppMode.getAndroidVersion () - это просто статический метод, который безопасно получает версию ОС Android в виде целого числа (поскольку приложение также работает на 1.5) ...

AppMode.FROYO_SDK_VERSION - это просто статический финал int, указывающий уровень API FroYo.

0 голосов
/ 24 июня 2010

Об этой проблеме говорилось в одной статье.

В android 2.2 все еще есть кнопка «Force Close» в тесте эмулятора. Таким образом, это означает, что у него все еще есть способ преодолеть исчезнувшую функцию "restartpackage" Но я не уверен, что это публичный API или просто позволяет использовать системный уровень. Надеюсь, что ответ прежний. (

текст ссылки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...