Se quiser substituir um ícone de aplicativo de terceiros por um tema criado por um desenvolvedor de temas Android, você deverá saber o nome do pacote do aplicativo. Na verdade, é muito simples saber o nome do pacote do aplicativo. Basta abrir o Google Play ou Wandoujia no navegador, abrir a página de um aplicativo e olhar a URL. Você encontrará o último caractere "/". a URL é seguida pelo nome do pacote do aplicativo!
Acho que alguém queria obter os ícones e nomes de pacotes de aplicativos comumente usados, então escrevi um pequeno programa em Java para capturar em lote ícones e pacotes de aplicativos das páginas 1 a 20 de "Todos os softwares" no Wandoujia, classificados pelo nome total de downloads. .
Todos os ícones são nomeados com nomes de pacotes e também há um arquivo packageName.txt dentro, que contém o nome do pacote correspondente ao nome do aplicativo para facilitar a pesquisa.
código fonte java
Compartilhe este miniaplicativo java. Observe que se a estrutura da página da web do Wandoujia mudar (provavelmente raramente muda), este miniaplicativo precisará ser modificado.
O código a seguir pode não ser mais válido e é apenas para referência!
Copie o código do código da seguinte forma:
pacote im.garth.AppIconDownloader;
importar java.io.BufferedWriter;
importar java.io.File;
importar java.io.FileOutputStream;
importar java.io.FileWriter;
importar java.io.IOException;
importar java.io.InputStream;
importar java.io.OutputStream;
importar java.net.URL;
importar java.net.URLConnection;
importar java.util.HashMap;
importar java.util.Map.Entry;
importar org.apache.http.HttpEntity;
importar org.apache.http.HttpResponse;
importar org.apache.http.HttpStatus;
importar org.apache.http.client.HttpClient;
importar org.apache.http.client.methods.HttpGet;
importar org.apache.http.impl.client.DefaultHttpClient;
importar org.apache.http.util.EntityUtils;
importar org.jsoup.Jsoup;
importar org.jsoup.nodes.Document;
importar org.jsoup.nodes.Element;
importar org.jsoup.select.Elements;
/**
* Obtenha todo o software Android no site Wandoujia
* Nota: Antes de executar o programa, certifique-se de criar uma pasta de ícones neste diretório do projeto.
* Todos os ícones serão baixados para a pasta de ícones
* O nome do aplicativo e o nome do pacote estão escritos no arquivo packageName.txt sob o ícone
*
* Pacotes Jar usados neste programa:
* commons-logging-1.1.3.jar
* httpclient-4.1.2.jar
* httpcore-4.3.jar
* jsoup-1.6.1.jar
*
*
*/
classe pública AppIconDownloader {
/**
* @param argumentos
*/
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=";
//Baixa ícones de aplicativos das páginas 1 a 20
for(int i = 1; i < = 20; i++) {
System.out.println("[Progresso do download]: Preparar para baixar a página " + i + "");
String UrlAtual = URLUrl + i;
HashMap<String, String> apps = new HashMap<string, String>();
aplicativos = getAppImageUrl(urlatual);
//Atravesse o HashMap para baixar os ícones um por um
for(Entry</string><string , String> entrada: apps.entrySet()) {
tentar{
//Baixe o ícone e armazene-o no diretório de ícones no diretório do projeto atual (crie o diretório de ícones com antecedência)
download(entry.getValue(), "icon/" + entry.getKey() + ".png");
}catch(Exceção e){
System.out.println("[Erro de download]: " +entrada.getKey());
e.printStackTrace();
}
}
System.out.println("[Progresso do download]: Página " + i + " download concluído");
}
}
/**
* Obtenha os nomes dos aplicativos e URLs dos ícones de todos os aplicativos na página URL da web
* @param appPackageName
* @retornar
*/
hashMap estático privado</string><string, String> getAppImageUrl(String url) {
HashMap</string><string, String> apps = new HashMap</string><string, String>();
String appPackageName = "";
String appImageUrl = "";
String appName = "";
Stringhtml = getHtmlByUrl(url);
Documento doc = Jsoup.parse(html);
Elementos elementos = doc.select("div.container.clearfix>section.main-col>div.app-blocks>div.app-block>ul.app-list.clearfix>li.app>a.icon-area" );
Elementos nameElements = doc.select("div.container.clearfix>section.main-col>div.app-blocks>div.app-block>ul.app-list.clearfix>li.app>div.operate>a. nome>span.txt");
Elementos imagemEle;
int eu = 0;
for(Elemento ele: elementos) {
//Obtém o nome do pacote
appPackageName = ele.attr("data-pn");
//Obtém a URL do ícone
imagemEle = ele.select("img.icon");
appImageUrl = imageEle.get(0).attr("src").replace("68_68", "256_256");
//Adicionar aplicativos
apps.put(appPackageName, appImageUrl);
//Obtém o nome do aplicativo
appName = nomeElements.get(i).text();
//Envia o nome do aplicativo e o nome do pacote para o arquivo
write2file("【" + appName + "】" + appPackageName);
eu++;
}
System.out.println("[Progresso do download]:" + url + "O URL do ícone em "foi obtido com sucesso");
devolver aplicativos;
}
/**
* Baixe arquivos para local
*
* @param urlString
* Endereço do arquivo baixado
* @param nome do arquivo
* Nome do arquivo local
* @throwsException
* Várias anormalidades
*/
download vazio estático privado (String urlString, String nome do arquivo) lança exceção {
System.out.println("[Progresso do download]: Baixando" + nome do arquivo);
//Constrói URL
URL url = nova URL(urlString);
//Abre conexão
URLConnection com = url.openConnection();
//fluxo de entrada
InputStream é = con.getInputStream();
// Buffer de dados de 1K
byte[] bs = novo byte[1024];
//O comprimento dos dados lidos
interno;
//fluxo de arquivo de saída
OutputStream os = new FileOutputStream(nome do arquivo);
//Comece a ler
enquanto ((len = is.read(bs)) != -1) {
os.write(bs, 0, len);
}
// Pronto, feche todos os links
os.close();
é.close();
System.out.println("[Progresso do download]:" + nome do arquivo + "Download bem-sucedido");
}
/**
* Obtenha todas as informações HTML com base no URL
*@paramurl
* @returnhtml
*/
String estática privada getHtmlByUrl(String url){
Stringhtml=nulo;
//Cria o objeto httpClient
HttpClient httpClient = new DefaultHttpClient();
//Solicita a URL no modo get
HttpGet httpget = novo HttpGet(url);
tentar {
//Obtém o objeto de resposta
Resposta HttpResponse = httpClient.execute(httpget);
//código de retorno
int resStatu = resposta.getStatusLine().getStatusCode();
//200 é normal, outros estão incorretos
if (resStatu==HttpStatus.SC_OK) {
//Obtém a entidade correspondente
Entidade HttpEntity = resposta.getEntity();
if (entidade!=nulo) {
//Obtém o código fonte HTML
html = EntityUtils.toString(entidade);
}
}
} catch (Exceção e) {
System.out.println("Ocorreu exceção ao acessar ["+url+"]!");
e.printStackTrace();
} finalmente {
httpClient.getConnectionManager().shutdown();
}
retornar HTML;
}
private static void write2file(Conteúdo da string) {
Arquivo arquivo = new Arquivo("icon/nomedopacote.txt");
Escritor BufferedWriter = null;
tentar{
if(!file.exists()) {
arquivo.createNewFile();
}
//Parâmetro true significa anexar a saída ao final do conteúdo do arquivo sem substituir o conteúdo original.
escritor = novo BufferedWriter(new FileWriter(arquivo, verdadeiro));
//conteúdo de saída
escritor.write(conteúdo);
//Nova linha
escritor.newLine();
} catch(IOException e){
System.out.println("Erro de saída");
e.printStackTrace();
} finalmente {
if(escritor! = nulo) {
tentar {
escritor.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
}
}