2016-09-19 2 views
2

Ich habe den klassischen Fall, dass eine meiner Apps Inhalte für meine andere App bereitstellt. Ich weiß, dass der Inhaltsanbieter mit einer Berechtigung mit einer Signaturschutzebene gesichert werden kann. Aber ich bin besorgt über die andere Richtung. Was ist, wenn die App, die den Inhaltsanbieter enthält, nicht installiert ist und eine schädliche App einen Anbieter mit derselben Berechtigung enthält (ich weiß, dass die Autorität nicht versehentlich kollidieren sollte, aber ich über eine bösartige App nachdenke). Wie kann ich sicherstellen, dass meine App den Anbieter nur dann abfragt, wenn er in einer App mit derselben Signatur definiert ist?Signatur von ContentProvider überprüfen

Die nächste Sache, über die ich nachdenken kann, ist, meine andere App über den Paketmanager zu finden und zu überprüfen, ob die Signatur übereinstimmt. Und da meine andere App über den Inhaltsanbieter verfügt, kann ein anderer Inhaltsanbieter mit derselben Berechtigung nicht auf demselben Gerät installiert werden. Aber damit stelle ich die Verbindung zwischen dem Paketnamen und der Autorität her. Ich hoffe, es gibt einen saubereren Weg.

Antwort

3

Rufen Sie resolveContentProvider() auf PackageManager, übergeben Sie die Autoritätszeichenfolge. Dies gibt Ihnen die Details über die ContentProvider für diese Zeichenfolge. Überprüfen Sie von dort aus die Signatur des Pakets des Anbieters, um festzustellen, ob es mit Ihrem übereinstimmt.