Wenn Sie das Symbol einer Drittanbieteranwendung durch ein von einem Android-Designentwickler erstelltes Design ersetzen möchten, müssen Sie den Paketnamen der Anwendung kennen. Tatsächlich ist es sehr einfach, den Paketnamen der Anwendung zu erfahren. Öffnen Sie einfach Google Play oder Wandoujia im Browser, öffnen Sie die Seite einer Anwendung und sehen Sie sich die URL an Auf die URL folgt der Paketname der Anwendung!
Ich vermute, jemand wollte die Symbole und Paketnamen häufig verwendeter Anwendungen erhalten, also habe ich ein kleines Programm in Java geschrieben, um Anwendungssymbole und Pakete von den Seiten 1 bis 20 von „All Software“ auf Wandoujia stapelweise zu erfassen, sortiert nach Gesamtnamen .
Alle Symbole sind mit Paketnamen benannt, und es gibt auch eine Datei „packageName.txt“, die zur einfachen Suche den Paketnamen enthält, der dem Anwendungsnamen entspricht.
Java-Quellcode
Teilen Sie dieses Java-Applet. Beachten Sie, dass die Änderung sehr einfach ist, wenn sich die Webseitenstruktur von Wandoujia ändert (wahrscheinlich ändert sie sich selten).
Der folgende Code ist möglicherweise nicht mehr gültig und dient nur als Referenz!
Kopieren Sie den Codecode wie folgt:
Paket im.garth.AppIconDownloader;
import java.io.BufferedWriter;
java.io.File importieren;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
java.net.URL importieren;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map.Entry;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
* Holen Sie sich die gesamte Android-Software auf der Wandoujia-Website
* Hinweis: Bevor Sie das Programm ausführen, müssen Sie unbedingt einen Symbolordner in diesem Projektverzeichnis erstellen.
* Alle Symbole werden in den Symbolordner heruntergeladen
* Der Anwendungsname und der Paketname werden in die Datei packageName.txt unter dem Symbol geschrieben
*
* In diesem Programm verwendete Jar-Pakete:
* commons-logging-1.1.3.jar
* httpclient-4.1.2.jar
* httpcore-4.3.jar
* jsoup-1.6.1.jar
*
*
*/
öffentliche Klasse AppIconDownloader {
/**
* @param args
*/
public static void main(String[] args) {
String rootUrl = "http://www.wandoujia.com/tag/all software/total?page=";
//String rootUrl = "http://www.wandoujia.com/tag/allgames/total?page=";
//Laden Sie Anwendungssymbole von den Seiten 1 bis 20 herunter
for(int i = 1; i < = 20; i++) {
System.out.println("[Download-Fortschritt]: Bereiten Sie die Download-Seite vor " + i + "");
String currentUrl = rootUrl + i;
HashMap<String, String> apps = new HashMap<string, String>();
apps = getAppImageUrl(currentUrl);
// Durchlaufen Sie die HashMap, um die Symbole einzeln herunterzuladen
for(Entry</string><string , String> Eintrag : apps.entrySet()) {
versuchen{
// Laden Sie das Symbol herunter und speichern Sie es im Symbolverzeichnis unter dem aktuellen Projektverzeichnis (bitte erstellen Sie das Symbolverzeichnis im Voraus).
download(entry.getValue(), „icon/“ + enter.getKey() + „.png“);
}catch(Ausnahme e) {
System.out.println("[Download-Fehler]: " + enter.getKey());
e.printStackTrace();
}
}
System.out.println("[Download-Fortschritt]: Seite " + i + " Download abgeschlossen");
}
}
/**
* Rufen Sie die Anwendungsnamen und Symbol-URLs aller Anwendungen auf der URL-Webseite ab
* @param appPackageName
* @zurückkehren
*/
private static HashMap</string><string, String> getAppImageUrl(String url) {
HashMap</string><string, String> apps = new HashMap</string><string, String>();
String appPackageName = "";
String appImageUrl = "";
String appName = "";
String html = getHtmlByUrl(url);
Dokumentdokument = Jsoup.parse(html);
Elemente elements = doc.select("div.container.clearfix>section.main-col>div.app-blocks>div.app-block>ul.app-list.clearfix>li.app>a.icon-area" );
Elemente nameElements = doc.select("div.container.clearfix>section.main-col>div.app-blocks>div.app-block>ul.app-list.clearfix>li.app>div.operate>a. name>span.txt");
Elemente imageEle;
int i = 0;
for(Element ele : elements) {
//Den Paketnamen abrufen
appPackageName = ele.attr("data-pn");
//Holen Sie sich die Symbol-URL
imageEle = ele.select("img.icon");
appImageUrl = imageEle.get(0).attr("src").replace("68_68", "256_256");
//Apps hinzufügen
apps.put(appPackageName, appImageUrl);
//Den App-Namen abrufen
appName = nameElements.get(i).text();
//App-Namen und Paketnamen in die Datei ausgeben
write2file("【" + appName + "】" + appPackageName);
i++;
}
System.out.println("[Download-Fortschritt]:" + url + "Die Symbol-URL unter „wurde erfolgreich abgerufen");
Apps zurückgeben;
}
/**
* Laden Sie Dateien lokal herunter
*
* @param urlString
* Adresse der heruntergeladenen Datei
* @param Dateiname
* Lokaler Dateiname
* @throwsException
* Verschiedene Anomalien
*/
private static void download(String urlString, String filename) löst eine Ausnahme aus {
System.out.println("[Download-Fortschritt]: Wird heruntergeladen" + Dateiname);
// URL erstellen
URL url = neue URL(urlString);
//Verbindung öffnen
URLConnection con = url.openConnection();
// Eingabestream
InputStream ist = con.getInputStream();
// 1K Datenpuffer
byte[] bs = neues Byte[1024];
//Die Länge der gelesenen Daten
int len;
//Dateistream ausgeben
OutputStream os = new FileOutputStream(filename);
// Beginnen Sie mit dem Lesen
while ((len = is.read(bs)) != -1) {
os.write(bs, 0, len);
}
// Fertig, alle Links schließen
os.close();
is.close();
System.out.println("[Download-Fortschritt]:" + Dateiname + "Download erfolgreich");
}
/**
* Erhalten Sie alle HTML-Informationen basierend auf der URL
* @param-URL
* @return html
*/
privater statischer String getHtmlByUrl(String url){
String html = null;
//httpClient-Objekt erstellen
HttpClient httpClient = new DefaultHttpClient();
//Fordern Sie die URL im Get-Modus an
HttpGet httpget = new HttpGet(url);
versuchen {
//Das Antwortobjekt abrufen
HttpResponse-Antwort = httpClient.execute(httpget);
//Rückgabecode
int resStatu = Response.getStatusLine().getStatusCode();
//200 ist normal, andere sind falsch
if (resStatu==HttpStatus.SC_OK) {
//Holen Sie sich die entsprechende Entität
HttpEntity-Entity = Response.getEntity();
if (entity!=null) {
//HTML-Quellcode abrufen
html = EntityUtils.toString(entity);
}
}
} Catch (Ausnahme e) {
System.out.println("Beim Zugriff auf ["+url+"] ist eine Ausnahme aufgetreten!");
e.printStackTrace();
} Endlich {
httpClient.getConnectionManager().shutdown();
}
html zurückgeben;
}
private static void write2file(String content) {
Datei file = new File("icon/packageName.txt");
BufferedWriterwriter = null;
versuchen{
if(!file.exists()) {
file.createNewFile();
}
//Parameter true bedeutet, dass die Ausgabe an das Ende des Dateiinhalts angehängt wird, ohne den ursprünglichen Inhalt zu überschreiben.
write = new BufferedWriter(new FileWriter(file, true));
//Inhalt ausgeben
Writer.write(content);
//Neue Zeile
Writer.newLine();
} Catch(IOException e){
System.out.println("Ausgabefehler");
e.printStackTrace();
} Endlich {
if( Writer != null) {
versuchen {
Writer.close();
} Catch(IOException e) {
e.printStackTrace();
}
}
}
}
}