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