В настоящее время я работаю над проектом, который будет отфильтровывать какой-то конкретный запрос из определенного приложения в книжки контактов Android. Мне интересно, как я могу выяснить, какое приложение обращается к поставщику контактов? Я просмотрел ссылки API, но похоже, что есть только способы приобретения клиента поставщика контента вместо того, чтобы приобретать приложение, запрашивающее доступ к данным. Если кто-нибудь может это объяснить, это будет большой помощью! Заранее спасибо!Android: Как вычислить клиента с разрешением контента
1
A
ответ
1
С вашего ContentProvider
вы можете получить имя пакета приложения вам звонит, как это:
@NonNull
private static Collection<String> getCallingPackages(Context context) {
int callingUid = Binder.getCallingUid();
if (callingUid == 0) {
return Collections.emptyList();
}
String[] packages = context.getPackageManager().getPackagesForUid(callingUid);
return new ArrayList<>(Arrays.asList(packages));
}
Вы можете проверить, что пакет (ы) на белый список/черный список, что вы поддерживаете.
+0
Спасибо, что идея работает – user7153368
«ContentResolver» не имеет «клиента», по крайней мере, с точки зрения того, как я буду использовать этот термин. – CommonsWare
Я пытался сказать, что приложение вызывает контент-резольвер. Есть ли какое-нибудь имя для этого? – user7153368
Я бы назвал это клиентом 'ContentProvider'. – CommonsWare