Ich habe eine Activity
A, die von Application1
und Application2
aufgerufen werden kann, in meiner Anwendung.Ist es möglich, den Paketnamen der Anrufer-App von Activities bei der Interprozesskommunikation zu erhalten?
die Config von AcitivityA
in der Manifest
Datei unter:
<activity
android :name=".activity.ActivityA"
android :exported="true"
android :screenOrientation="portrait"/>
Wie Application1
und Application2
Anruf ActivityA
:
PackageManager packageManager = getPackageManager();
Intent intent = new Intent();
intent.setClassName(“com.abc.test", “com.abc.test.activity.ActivityA");
List activities = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (activities.size() > 0) {
startActivity(intent);
}
Zur Sicherheit habe ich eine weiße Liste enthält Application1
und Application2
hinzufügen möchten Der Paketname in ActivityA
, der nur geöffnet werden kann, wenn der Paketname des Anrufers ActivityA's
in der Whitelist steht.
So ist es möglich, den Paketnamen Activities
Anrufer-App in ActivityA
zu bekommen?
EDITED:
wenn unmöglich, ohne zusätzliche Daten in Intent Jede andere Idee Activity A
Sicherheit zu halten?
Ich besitze nicht alle Anrufer, daher kann ich keine Berechtigung mit protectionLevel Signature verwenden. Wenn ich die Berechtigung mit "normal" verwende, können andere Apps ihr Manifest so ändern, dass sie dieselbe Berechtigung verwenden. – Xiaozou
siehe Bearbeiten: Haben Sie die Verwendung von Bindern in Betracht gezogen? – F43nd1r
Nein, es ist ein wenig kompliziert. – Xiaozou