У меня есть приложение, в котором хранится журнал встроенных приложений, установленных на устройстве. После установки широковещательный приемник для Intent.PACKAGE_ADDED вызывается и записывает имя пакета, используя следующий код:Как найти имя пакета, которое было удалено при использовании Intent.ACTION_PACKAGE_REMOVED
public class NewInstallReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Bundle b = intent.getExtras();
int uid = b.getInt(Intent.EXTRA_UID);
String[] packages = context.getPackageManager().getPackagesForUid(uid);
ApplicationService appService = new ApplicationService(context);
appService.ApplicationInstalled(packages);
}
}
Проблема я столкнулся при использовании в широковещательный приемник для Intent.PACKAGE_REMOVED, все ссылки на пакет через уникальный идентификатор (UID) возвращается с нулевой информацией (как и следовало ожидать, учитывая, что он уже был удален). Тем временем у меня есть временное решение, но оно не очень элегантное, и для следующей версии я хотел бы иметь более чистый код. Пример того, как код должен работать:
public class RemoveApplicationReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Bundle b = intent.getExtras();
int uid = b.getInt(Intent.EXTRA_UID);
String[] packages = context.getPackageManager().getPackagesForUid(uid);
ApplicationService appService = new ApplicationService(context);
appService.ApplicationRemoved(packages);
}
}
Подведем итоги, вопрос:
Как, после того, как программа была удалена, я могу сослаться на имя пакета в широковещательный приемник для Намерения. PACKAGE_REMOVED.
Благодаря
Я также получаю null от getPackagesForUid (uid). Я хочу получить список всех пакетов, установленных для текущего пользователя. Может ли кто-нибудь предоставить какой-либо ввод? – Pratik