Мне нужно запустить удаление определенного приложения из моего собственного приложения. Единственное, что у меня есть, это apk приложений, даже если он не обязательно должен быть той же версии, что и установленное приложение. Конечно, удаление будет осуществляться с помощью Android. Точно так же, как установка приложения из заданного файла apk.
Есть ли способ, как я могу собрать намерение заставить Android открыть ответственную системную службу и попросить пользователя удалить или что-то в этом роде?
Приложение, которое нужно удалить, может измениться, поэтому я не могу использовать постоянное имя пакета или что-то в этом роде.
Есть ли способ сделать это? Я знаю, что вы можете извлечь имя пакета из apk, но это кажется большой работой и, вероятно, излишним.
@ArbazAlam Удаление, конечно же, должно быть подтверждено пользователем. Само удаление будет выполняться Android, так же как установка приложения из заданного файла apk. После передачи в систему открывается ответственная системная служба, и пользователю необходимо взаимодействовать. Вы можете удалять приложения из таких приложений, если у вас есть имя пакета приложений. Но у меня только apk
Если вся имеющаяся у вас информация - это APK, я не понимаю, как можно избежать извлечения данных из него.
@JJJ Может быть, есть какой-нибудь простой способ, предоставляемый Android, для получения имени пакета из файла apk?




Использование намерения Intent.ACTION_DELETE
Intent intent = new Intent(Intent.ACTION_DELETE);
intent.setData(Uri.parse("package:com.example.mypackage"));
startActivity(intent);
Вы можете получить собственное имя пакета из контекста;
getApplicationContext().getPackageName();
У меня только apk. Не название пакета. Придется извлечь его, похоже, много работы.
Я также не пытаюсь удалить собственное приложение. Мое приложение загружает файлы apks из репозитория и предоставляет для них функции установки / обновления / удаления. Проблема в том, что у меня есть только apk-файлы других приложений и нет имени пакета. Кажется, что для запуска удаления требуется имя пакета.
Верно, но каждый файл .apk содержит AndroidManifest.xml, из которого вы извлекаете имя пакета. На самом деле это довольно просто (а .apk - это просто файл .zip)
если вы хотите удалить приложение, оно должно быть установлено правильно? вы можете получить все установленное приложение и его имена пакетов, а также другую информацию, такую как значок, путь, активность средства запуска и т. д. и попросить пользователя выбрать приложение, которое они хотят удалить, таким образом, вы будете знать имя пакета этого приложения.
вы можете получить список установленных приложений, как это
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-файлом и приложениями в списке.
Ты мой герой :) Это именно то, что я искал, большое спасибо. Ты только что сделал мой день, уже сдавался. Используя это, я могу извлечь имя пакета apk и проверить, установлено ли приложение или нет и т. д. Замечательно!
Нет, ты не можешь этого сделать. Если это возможно, в Play Store нет конкуренции разработчиков. Подумайте, прежде чем спрашивать.