Удалите приложение с помощью APK

Мне нужно запустить удаление определенного приложения из моего собственного приложения. Единственное, что у меня есть, это apk приложений, даже если он не обязательно должен быть той же версии, что и установленное приложение. Конечно, удаление будет осуществляться с помощью Android. Точно так же, как установка приложения из заданного файла apk.

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

Приложение, которое нужно удалить, может измениться, поэтому я не могу использовать постоянное имя пакета или что-то в этом роде.

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

Нет, ты не можешь этого сделать. Если это возможно, в Play Store нет конкуренции разработчиков. Подумайте, прежде чем спрашивать.

Arbaz Alam 27.03.2018 10:41

@ArbazAlam Удаление, конечно же, должно быть подтверждено пользователем. Само удаление будет выполняться Android, так же как установка приложения из заданного файла apk. После передачи в систему открывается ответственная системная служба, и пользователю необходимо взаимодействовать. Вы можете удалять приложения из таких приложений, если у вас есть имя пакета приложений. Но у меня только apk

Basti 27.03.2018 10:46

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

JJJ 27.03.2018 10:48

@JJJ Может быть, есть какой-нибудь простой способ, предоставляемый Android, для получения имени пакета из файла apk?

Basti 27.03.2018 10:51
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
150
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Использование намерения Intent.ACTION_DELETE

Intent intent = new Intent(Intent.ACTION_DELETE);
intent.setData(Uri.parse("package:com.example.mypackage"));
startActivity(intent);

Вы можете получить собственное имя пакета из контекста;

getApplicationContext().getPackageName();

У меня только apk. Не название пакета. Придется извлечь его, похоже, много работы.

Basti 27.03.2018 10:50

Я также не пытаюсь удалить собственное приложение. Мое приложение загружает файлы apks из репозитория и предоставляет для них функции установки / обновления / удаления. Проблема в том, что у меня есть только apk-файлы других приложений и нет имени пакета. Кажется, что для запуска удаления требуется имя пакета.

Basti 27.03.2018 10:58

Верно, но каждый файл .apk содержит AndroidManifest.xml, из которого вы извлекаете имя пакета. На самом деле это довольно просто (а .apk - это просто файл .zip)

Ch4t4r 27.03.2018 11:04
Ответ принят как подходящий

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

вы можете получить список установленных приложений, как это

final PackageManager pm = getPackageManager();
//get a list of installed apps.
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

for (ApplicationInfo packageInfo : packages) {
    Log.d(TAG, "Installed package :" + packageInfo.packageName);
    Log.d(TAG, "Source dir : " + packageInfo.sourceDir);
    Log.d(TAG, "Launch Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName)); 
}

нет возможности удалить приложение из APK

РЕДАКТИРОВАТЬ

Посмотрите этот метод из класса PackageManager:

public PackageInfo getPackageArchiveInfo(String archiveFilePath, int flags)

полезно читать архивы пакетов. не уверен, что это то, что вам нужно.

Пользователь может загрузить apk, еще не установив приложение. Мне все еще нужно проверить, установлен ли он или нет, если пользователь хочет выполнить чистую установку. Так что нет, приложение не нужно устанавливать в то время, когда мне нужно его найти. Кроме того, список всех приложений мне не помогает, потому что у меня нет связи между моим apk-файлом и приложениями в списке.

Basti 27.03.2018 11:06

Ты мой герой :) Это именно то, что я искал, большое спасибо. Ты только что сделал мой день, уже сдавался. Используя это, я могу извлечь имя пакета apk и проверить, установлено ли приложение или нет и т. д. Замечательно!

Basti 27.03.2018 11:29

Другие вопросы по теме