ist es möglich, den Namen der Installer-Datei zu erhalten, die auf/sdcard/ download/gespeichert ist? Ich möchte von app, apk Dateiname, der es installiert. Es gibt eine einfache Möglichkeit, es speziell mit Nicht-Markt-App zu tun?Android: Wie installiere ich den Dateinamen des Installers programmatisch?
Antwort
Der bessere Weg ist definitiv, die Versionszeichenfolge in das Manifest aufzunehmen. Dies ist wirklich die einzige zuverlässige (und professionelle) Methode. Android speichert den Namen der Datei, die die APK enthält, nirgendwo, daher gibt es keine Möglichkeit, sie zu erhalten.
Theoretisch könnte man wahrscheinlich etwas baut ein FileObserver
verwenden, dass die beobachtete Dateierstellung in bestimmten Verzeichnissen und jedes Mal, wenn eine Datei mit der Erweiterung erstellt wurde .apk
Sie die Datei öffnen konnten, das Manifest extrahieren, finden Sie die Paketnamen der APK und Speichern Sie diese Datei zusammen mit dem Dateinamen in einem persistenten Speicher. Wenn Sie dann die Versionsinformationen benötigen, können Sie im persisten-Speicher nach dem Dateinamen suchen, der mit dem Paketnamen übereinstimmt, den Sie benötigen.
Natürlich würde dies nur funktionieren, wenn Ihre App auf dem Gerät installiert wurde, bevor die anderen APK-Dateien heruntergeladen/installiert wurden. Dies würde nicht funktionieren, um den Dateinamen Ihrer eigenen Anwendung herauszufinden.
Hmm, ich bin nicht sicher, was Sie von der SD-Karte oder Download-Ordner bedeuten, aber man konnte apk Pfad in System/Datenverzeichnis erhalten:
Befehlszeile:
$ adb shell pm list packages | grep mk.trelloapp
package:mk.trelloapp
$ adb shell pm path mk.trelloapp
package:/data/app/mk.trelloapp-1/base.apk
oder von Ihnen Android-Anwendung Code: (einfach laufen Prozess)
Process exec = Runtime.getRuntime().exec("pm path mk.trelloapp");
exec.waitFor();
InputStream inputStream = exec.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder builder = new StringBuilder();
String line = null;
while((line = br.readLine()) != null) {
builder.append(line);
}
String commandOutput = builder.toString();
oben-Code sollte einfach geben Sie String mit "Paket: /data/app/mk.trelloapp-1/base.apk"
Wenn Sie den Pfad im Verzeichnis/data ermitteln, können Sie versuchen, dieselbe (ähnliche) Datei in anderen Verzeichnissen zu suchen (vorausgesetzt, sie wurde nicht gelöscht), da das Android-Paket während der Installation in das Verzeichnis/data kopiert wird.
Dies ist nicht hilfreich. OP möchte den ursprünglichen Dateinamen der heruntergeladenen APK-Datei abrufen können, da die Versionsnummer seiner App als Teil dieses Dateinamens codiert ist. Der APK-Pfad zu '/ data' enthält diese Informationen nicht, da nur der Paketname verwendet wird. –
Was meinen Sie mit "Installer-Dateiname"? Der Name der Apk? Wenn ja, warum willst du es? Bitte fügen Sie weitere Details hinzu. –
Ja Ich möchte den Namen von apk bekommen, die auf SD-Karte gespeichert ist. Ich erstellte apk-Datei und speicherte sie auf dem Server, wenn jemand sie herunterladen möchte, generieren Server Datei mit einem eindeutigen Namen zum Beispiel: "application00086.apk". Die Frage ist: Wie bekomme ich diesen eindeutigen Dateinamen von meiner App, der nach der Installation im Verzeichnis:/data/app/ich gefunden wurde interessante Methode: getInstallerPackageName aber diese Methode nur Installer Paketnamen und nur für Apps auf Android Market, I Ich möchte die Installer-Datei NAME erhalten und möchte meine App nicht im Market verteilen. – Wolfie
@Wolfie: Ich hatte das gleiche Problem mit dir. Hast du eine Lösung dafür? Vielen Dank ! – hoang8f