удалить приложение без вывода сообщений с системными привилегиями

Мое приложение имеет системные привилегии. Оно будет внутри прошивки, теперь это расположенный в /system/app

Я смог установить приложения без вывода сообщений с помощью этого поста

установить/удалить APK программно (PackageManager vs Intents)

пример приложения, которое работает

http://paulononaka.wordpress. com/2011/07/02/how-to-install-a-application-in-background-on-android/

Но я все еще не могу удалять приложения таким же образом.Я пытался использовать отражение, как в Пример установки.

public ApplicationManager(Context context) throws SecurityException, NoSuchMethodException {

    observer = new PackageInstallObserver();
    pm = context.getPackageManager();

    Class[] types = new Class[] {Uri.class, IPackageInstallObserver.class, int.class, String.class};
    Class[] uninstalltypes = new Class[] {String.class, IPackageInstallObserver.class, int.class};
    method = pm.getClass().getMethod("installPackage", types);
    uninstallmethod = pm.getClass().getMethod("deletePackage", uninstalltypes);
}


public void uninstallPackage(String packagename) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
        uninstallmethod.invoke(pm, new Object[] {packagename, observer, 0});
    }
    public void installPackage(Uri apkFile) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
        method.invoke(pm, new Object[] {apkFile, observer, INSTALL_REPLACE_EXISTING, null});
    }

Я добавил метод uninstallPackage и отредактировал метод ApplicationManager. Все еще не могу заставить это работать.

Когда я запускаю его, я получаю, что метод не найден (в строке вызова "deletePackage").

Здесь нет рабочий проект с моими изменениями:https://dl.dropbox.com/u/1928109/InstallInBackgroundSample.zip

Вот описание функции: http://www.androidjavadoc.com/1.0_r1_src/android/content/pm/PackageManager.html#deletePackage(java.lang.String, android.content.pm.IPackageDeleteObserver, int)

Параметры в порядке . Похоже, я должен указать класс DeletePackageObserver вместо InstallPackageObserver. Но я не знаю, как это сделать (у меня нет такого класса).

Спасибо

13
задан Andrey Belykh 3 November 2017 в 15:45
поделиться