Я использую этот код для получения списка установленных пакетов приложений на устройстве:
@NonNull
public ArrayList<String> getInstalledApps() {
// Create an empty array list :
ArrayList<String> apps = new ArrayList<>();
try {
// Load the E-walk plugins names :
List<ProviderInfo> allProviders = getPackageManager().queryContentProviders(null, 0, 0);
if(allProviders != null) {
for(ProviderInfo provider : allProviders) {
if(!apps.contains(provider.packageName)) apps.add(provider.packageName);
}
}
}
catch(Exception e) { e.printStackTrace(); }
return apps;
}
Он работает уже несколько лет в производстве. Недавно пользователь сообщил, что он больше не работает на его устройстве, хотя раньше он работал.
Я также использую запрос getContentResolver (). Для взаимодействия с другими приложениями, и это работает на устройстве этого пользователя. .
Что-то недавно изменилось с queryContentProviders? Я не нашел ничего особенного в документе. Если нет, то я предполагаю, что производитель устройства опубликовал обновление, нарушающее эту функцию. Есть ли альтернатива?