Если вы хотите заменить значок стороннего приложения темой, созданной разработчиком темы Android, вам необходимо знать имя пакета приложения. На самом деле узнать название пакета приложения очень просто. Просто откройте Google Play или Wandoujia в браузере, откройте страницу приложения и посмотрите URL-адрес. Вы увидите последний символ «/». за URL-адресом следует имя пакета приложения!
Я предполагаю, что кто-то хотел получить значки и названия пакетов часто используемых приложений, поэтому я написал небольшую программу на Java для пакетного захвата значков и пакетов приложений со страниц с 1 по 20 раздела «Все программное обеспечение» на Wandoujia, ранжированного по общему количеству загрузок. .
Все значки названы именами пакетов, а также внутри есть файл packageName.txt, который содержит имя пакета, соответствующее имени приложения, для удобного поиска.
исходный код Java
Поделитесь этим Java-апплетом. Обратите внимание: если структура веб-страницы Wandoujia изменится (вероятно, она меняется редко), этот апплет необходимо будет изменить. Если вы это понимаете, модификация очень проста.
Следующий код может быть недействителен и предназначен только для справки!
Скопируйте код кода следующим образом:
пакет im.garth.AppIconDownloader;
импортировать java.io.BufferedWriter;
импортировать java.io.File;
импортировать java.io.FileOutputStream;
импортировать java.io.FileWriter;
импортировать java.io.IOException;
импортировать java.io.InputStream;
импортировать java.io.OutputStream;
импортировать java.net.URL;
импортировать java.net.URLConnection;
импортировать java.util.HashMap;
импортировать java.util.Map.Entry;
импортировать org.apache.http.HttpEntity;
импортировать org.apache.http.HttpResponse;
импортировать org.apache.http.HttpStatus;
импортировать org.apache.http.client.HttpClient;
импортировать org.apache.http.client.methods.HttpGet;
импортировать org.apache.http.impl.client.DefaultHttpClient;
импортировать org.apache.http.util.EntityUtils;
импортировать org.jsoup.Jsoup;
импортировать org.jsoup.nodes.Document;
импортировать org.jsoup.nodes.Element;
импортировать org.jsoup.select.Elements;
/**
* Получите все программное обеспечение Android на веб-сайте Wandoujia.
* Примечание. Перед запуском программы обязательно создайте папку со значками в этом каталоге проекта.
* Все значки будут загружены в папку значков.
* Имя приложения и имя пакета прописываются в файле packageName.txt под иконкой
*
* Пакеты Jar, используемые в этой программе:
* commons-logging-1.1.3.jar
* httpclient-4.1.2.jar
* httpcore-4.3.jar
* jsoup-1.6.1.jar
*
*
*/
общественный класс AppIconDownloader {
/**
* @param аргументы
*/
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=";
//Загрузка значков приложений со страниц с 1 по 20
for(int я = 1; я < = 20; я++) {
System.out.println("[Ход загрузки]: Подготовьтесь к загрузке страницы " + i + "");
Строка currentUrl = rootUrl + я;
HashMap<String, String> apps = new HashMap<string, String>();
приложения = getAppImageUrl (currentUrl);
//Проходим по HashMap, чтобы загружать значки один за другим
for(Entry</string><string, String> запись: apps.entrySet()) {
пытаться{
//Загрузите значок и сохраните его в каталоге значков в текущем каталоге проекта (пожалуйста, создайте каталог значков заранее)
download(entry.getValue(), "icon/" + вход.getKey() + ".png");
}catch(Исключение е) {
System.out.println("[Ошибка загрузки]: " + вход.getKey());
е.printStackTrace();
}
}
System.out.println("[Ход загрузки]: загрузка страницы " + i + " завершена");
}
}
/**
* Получите имена приложений и URL-адреса значков всех приложений на веб-странице URL.
* @param имя_приложения_пакета
* @возвращаться
*/
частный статический HashMap</string><string, String> getAppImageUrl(String url) {
HashMap</string><string, String> apps = new HashMap</string><string, String>();
Строка appPackageName = "";
Строка appImageUrl = "";
Строка appName = "";
Строка html = getHtmlByUrl (url);
Документ документа = Jsoup.parse(html);
Elements elements = doc.select("div.container.clearfix>section.main-col>div.app-blocks>div.app-block>ul.app-list.clearfix>li.app>a.icon-area" );
Имя элементаElements = doc.select("div.container.clearfix>section.main-col>div.app-blocks>div.app-block>ul.app-list.clearfix>li.app>div.operate>a. имя>span.txt");
Элементы imageEle;
интервал я = 0;
for(Элемент ele: elements) {
//Получаем имя пакета
appPackageName = ele.attr("data-pn");
//Получаем URL-адрес значка
imageEle = ele.select("img.icon");
appImageUrl = imageEle.get(0).attr("src").replace("68_68", "256_256");
//Добавляем приложения
apps.put(appPackageName, appImageUrl);
//Получаем имя приложения
appName = nameElements.get(i).text();
//Выводим имя приложения и имя пакета в файл
write2file("【" + имя_приложения + "】" + имя_приложения);
я++;
}
System.out.println("[Ход загрузки]:" + url + "URL-адрес значка в разделе "был успешно получен");
вернуть приложения;
}
/**
* Загрузка файлов на локальный
*
* @param urlString
* Адрес загруженного файла
* @param имя файла
* Имя локального файла
* @throwsException
* Различные отклонения
*/
частная статическая загрузка void (String urlString, имя файла String) выдает исключение {
System.out.println("[Ход загрузки]: Загрузка" + имя файла);
// Создание URL-адреса
URL-адрес URL = новый URL-адрес (urlString);
//Открываем соединение
URLConnection con = url.openConnection();
// входной поток
InputStream = con.getInputStream();
// буфер данных 1 КБ
байт[] bs = новый байт[1024];
//Длина считываемых данных
интервал Лен;
//Поток выходного файла
OutputStream os = новый FileOutputStream (имя файла);
// Начинаем читать
while ((len = is.read(bs)) != -1) {
os.write(bs, 0, len);
}
// Готово, закрываем все ссылки
ОС.закрыть();
есть.закрыть();
System.out.println("[Ход загрузки]:" + имя файла + "Загрузка успешна");
}
/**
* Получить всю информацию в формате HTML на основе URL-адреса.
* @парам URL
* @return HTML
*/
частная статическая строка getHtmlByUrl(String url){
Строка HTML = ноль;
//Создаем объект httpClient
HttpClient httpClient = новый DefaultHttpClient();
//Запрашиваем URL в режиме получения
HttpGet httpget = новый HttpGet (url);
пытаться {
//Получаем объект ответа
Ответ HttpResponse = httpClient.execute(httpget);
//код возврата
int resStatu = response.getStatusLine().getStatusCode();
//200 — это нормально, остальные — неправильно
если (resStatu==HttpStatus.SC_OK) {
//Получаем соответствующую сущность
Объект HttpEntity = response.getEntity();
если (сущность!=ноль) {
//Получаем исходный код HTML
html = EntityUtils.toString(сущность);
}
}
} catch (Исключение е) {
System.out.println("Исключение при доступе к ["+url+"]!");
е.printStackTrace();
} окончательно {
httpClient.getConnectionManager().shutdown();
}
вернуть HTML;
}
Private static void write2file (строковое содержимое) {
Файл file = новый файл("icon/packageName.txt");
BufferedWriter писатель = ноль;
пытаться{
если(!file.exists()) {
файл.createNewFile();
}
//Параметр true означает добавление вывода в конец содержимого файла без перезаписи исходного содержимого.
писатель = новый BufferedWriter (новый FileWriter (файл, правда));
//выводим контент
писатель.писать (содержание);
//Новая строка
писатель.newLine();
} catch(IOException e){
System.out.println("Ошибка вывода");
е.printStackTrace();
} окончательно {
если (писатель!= ноль) {
пытаться {
писатель.закрыть();
} catch(IOException e) {
е.printStackTrace();
}
}
}
}
}