1

Ich arbeite derzeit an einem Projekt, das einige spezifische Abfrage von einer bestimmten App auf Android-Kontaktbücher herausfiltern wird. Ich frage mich, wie ich herausfinden kann, welche App auf den Kontaktanbieter zugreift? Ich habe mir die API-Referenzen angesehen, aber es sieht so aus, als ob es nur Methoden gibt, den Client des Content-Providers zu erwerben, anstatt die App zu erwerben, die nach dem Zugriff auf die Daten fragt. Wenn jemand das ein bisschen erklären könnte, wird es große Hilfe sein! Danke im Voraus!Android: Wie finde ich den Client von Content Resolver

+0

Ein 'ContentResolver' hat keinen" Client ", zumindest was die Verwendung des Begriffs angeht. – CommonsWare

+0

Ich habe versucht zu sagen, dass die App Content Resolver aufruft. Gibt es einen Namen dafür? – user7153368

+0

Ich würde das den Client des 'ContentProvider' nennen. – CommonsWare

Antwort

1

Von Ihrem ContentProvider können Sie den Paketnamen der App erhalten Sie wie folgt aufrufen:

@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)); 
} 

Sie können dann prüfen, ob das Paket (e) auf einer Whitelist/Blacklist, die Sie erhalten.

+0

Danke die Idee funktioniert – user7153368

Verwandte Themen