Jika Anda ingin mengganti icon aplikasi pihak ketiga dengan tema buatan pengembang tema Android, Anda harus mengetahui nama paket aplikasi tersebut. Sebenarnya, mengetahui nama paket aplikasi sangatlah mudah. Cukup buka Google Play atau Wandoujia di browser, buka halaman aplikasi, dan lihat URL-nya. Anda akan menemukan karakter "/" terakhir di dalamnya URL diikuti dengan nama paket aplikasi!
Saya kira seseorang ingin mendapatkan ikon dan nama paket dari aplikasi yang umum digunakan, jadi saya menulis sebuah program kecil di Java untuk menangkap ikon dan paket aplikasi secara batch dari halaman 1 hingga 20 "Semua Perangkat Lunak" di Wandoujia, diberi peringkat berdasarkan total nama unduhan .
Semua ikon diberi nama dengan nama paket, dan di dalamnya juga terdapat file packageName.txt, yang berisi nama paket yang sesuai dengan nama aplikasi untuk memudahkan pencarian.
kode sumber java
Bagikan applet java ini. Perhatikan bahwa jika struktur halaman web Wandoujia berubah (mungkin jarang berubah), applet ini perlu dimodifikasi. Jika Anda dapat memahaminya, modifikasinya sangat sederhana.
Kode berikut mungkin tidak valid lagi dan hanya untuk referensi!
Copy kode kodenya sebagai berikut:
paket im.garth.AppIconDownloader;
impor java.io.BufferedWriter;
impor java.io.File;
impor java.io.FileOutputStream;
impor java.io.FileWriter;
impor java.io.IOException;
impor java.io.InputStream;
impor java.io.OutputStream;
impor java.net.URL;
impor java.net.URLConnection;
impor 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;
/**
* Dapatkan semua perangkat lunak Android di situs Wandoujia
* Catatan: Sebelum menjalankan program, pastikan untuk membuat folder ikon di direktori proyek ini.
* Semua ikon akan diunduh ke folder ikon
*Nama aplikasi dan nama paket ditulis pada file packageName.txt di bawah icon
*
* Paket jar yang digunakan dalam program ini:
* commons-logging-1.1.3.jar
* httpklien-4.1.2.jar
* httpcore-4.3.jar
*jsoup-1.6.1.jar
*
*
*/
Pengunduh AppIcon kelas publik {
/**
* @param argumen
*/
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=";
//Unduh ikon aplikasi dari halaman 1 hingga 20
untuk(int saya = 1; saya < = 20; saya++) {
System.out.println("[Kemajuan pengunduhan]: Mempersiapkan halaman pengunduhan " + i + "");
String currentUrl = rootUrl + i;
HashMap<String, String> aplikasi = HashMap baru<string, String>();
aplikasi = getAppImageUrl(currentUrl);
//Lintasi HashMap untuk mengunduh ikon satu per satu
for(Entri</string><string , String> entri : apps.entrySet()) {
mencoba{
//Unduh ikon dan simpan di direktori ikon di bawah direktori proyek saat ini (harap buat direktori ikon terlebih dahulu)
unduh(entry.getValue(), "icon/" + entry.getKey() + ".png");
}menangkap(Pengecualian e) {
System.out.println("[Kesalahan pengunduhan]: " + entry.getKey());
e.printStackTrace();
}
}
System.out.println("[Kemajuan pengunduhan]: Halaman " + i + " pengunduhan selesai");
}
}
/**
* Dapatkan nama aplikasi dan URL ikon semua aplikasi di halaman web url
* @param appPackageName
* @kembali
*/
HashMap statis pribadi</string><string, String> getAppImageUrl(String url) {
HashMap</string><string, String> aplikasi = HashMap baru</string><string, String>();
String appPackageName = "";
String appImageUrl = "";
Stringnamaaplikasi = "";
String html = getHtmlByUrl(url);
Dokumen doc = Jsoup.parse(html);
Elemen elemen = doc.select("div.container.clearfix>section.main-col>div.app-blocks>div.app-block>ul.app-list.clearfix>li.app>a.icon-area" );
Elemen nameElements = doc.select("div.container.clearfix>section.main-col>div.app-blocks>div.app-block>ul.app-list.clearfix>li.app>div.operate>a. nama>span.txt");
Elemen gambarEle;
ke dalam saya = 0;
for(Elemen elemen : elemen) {
//Dapatkan nama paketnya
appPackageName = ele.attr("data-pn");
//Dapatkan URL ikon
imageEle = ele.select("img.icon");
appImageUrl = imageEle.get(0).attr("src").replace("68_68", "256_256");
//Tambahkan aplikasi
apps.put(appPackageName, appImageUrl);
//Dapatkan nama aplikasi
appName = nameElements.get(i).text();
//Keluarkan nama aplikasi dan nama paket ke file
write2file("【" + Namaaplikasi + "】" + NamaPaketaplikasi);
saya++;
}
System.out.println("[Kemajuan Unduhan]:" + url + "URL ikon di bawah "telah berhasil diperoleh");
mengembalikan aplikasi;
}
/**
* Unduh file ke lokal
*
* @param urlString
* Alamat file yang diunduh
* @param nama file
* Nama file lokal
* @throwsException
* Berbagai kelainan
*/
unduhan void statis pribadi (String urlString, nama file String) memunculkan Pengecualian {
System.out.println("[Kemajuan pengunduhan]: Pengunduhan" + nama file);
// Membangun URL
URL url = URL baru(urlString);
//Buka koneksi
URLConnection con = url.openConnection();
// aliran masukan
InputStream adalah = con.getInputStream();
// penyangga data 1K
byte[] bs = byte baru[1024];
//Panjang data yang dibaca
ke dalam len;
//Aliran file keluaran
OutputStream os = FileOutputStream baru(nama file);
// Mulai membaca
while ((len = is.read(bs)) != -1) {
os.write(bs, 0, len);
}
// Selesai, tutup semua link
os.close();
adalah.close();
System.out.println("[Progres pengunduhan]:" + nama file + "Pengunduhan berhasil");
}
/**
* Dapatkan semua informasi html berdasarkan URL
* @param url
* @kembalikan html
*/
String statis pribadi getHtmlByUrl(String url){
String html = nol;
//Buat objek httpClient
HttpClient httpClient = baru DefaultHttpClient();
//Minta URL dalam mode dapatkan
HttpGet httpget = HttpGet baru(url);
mencoba {
//Dapatkan objek respons
Respons HttpResponse = httpClient.execute(httpget);
//mengembalikan kode
int resStatu = respon.getStatusLine().getStatusCode();
//200 normal, yang lainnya salah
jika (resStatu==HttpStatus.SC_OK) {
//Dapatkan entitas yang sesuai
Entitas HttpEntity = respon.getEntity();
if (entitas!=null) {
//Dapatkan kode sumber html
html = EntityUtils.toString(entitas);
}
}
} tangkapan (Pengecualian e) {
System.out.println("Terjadi pengecualian saat mengakses ["+url+"]!");
e.printStackTrace();
} Akhirnya {
httpClient.getConnectionManager().shutdown();
}
kembalikan html;
}
private static void write2file(Konten string) {
File file = File baru("icon/packageName.txt");
Penulis BufferedWriter = null;
mencoba{
if(!file.ada()) {
file.createNewFile();
}
//Parameter true berarti menambahkan output ke akhir konten file tanpa menimpa konten asli.
penulis = new BufferedWriter(fileWriter baru(file, benar));
//keluaran konten
penulis.tulis(konten);
//baris baru
penulis.newLine();
} tangkapan(IOException e){
System.out.println("Kesalahan keluaran");
e.printStackTrace();
} Akhirnya {
jika( penulis != null) {
mencoba {
penulis.close();
} tangkapan(IOException e) {
e.printStackTrace();
}
}
}
}
}