[英]Android: Determine category of installed apps
鑒於Android設備上已安裝的軟件包列表,是否有辦法將應用程序分類,而不使用類別中自編譯的硬編碼應用程序列表?
例如,如果安裝的應用程序是電話,憤怒的小鳥和消息,電話和消息可能在通信和憤怒的小鳥在游戲中。
我已經看過如何在Android上的設備上獲取每個應用程序的類別? 但希望可能有一種方法隨之而來。
不,因為應用沒有類別。 不需要通過Google Play安裝應用,其他商店的類別也不一樣。 它可能永遠不會從商店安裝開始 - 我總是自己或朋友寫的應用程序。 這個概念不存在。
更不用說谷歌播放類別非常糟糕 - 事情往往不屬於其中一種,描述含糊不清,而且它們太寬泛 - 它們需要至少2或3個子類別才能使它們中途使用。
自上一個問題以來,API沒有變化。
最多,您可以檢索每個包名稱並抓取Google Play頁面。 但是,如果Google Play上沒有該應用,則會失敗。
我也遇到了同樣的問題。 上述查詢的解決方案如下所述。
首先,下載Jsoup庫或下載jar文件。
或者將它添加到你的build.gradle(Module:app)實現'org.jsoup:jsoup:1.11.3'
private class FetchCategoryTask extends AsyncTask {
private final String TAG = FetchCategoryTask.class.getSimpleName();
private PackageManager pm;
@Override
protected Void doInBackground(Void... errors) {
String category;
pm = getPackageManager();
List<ApplicationInfo> packages =
pm.getInstalledApplications(PackageManager.GET_META_DATA);
Iterator<ApplicationInfo> iterator = packages.iterator();
// while (iterator.hasNext()) {
// ApplicationInfo packageInfo = iterator.next();
String query_url = "https://play.google.com/store/apps/details?
id=com.imo.android.imoim"; //GOOGLE_URL + packageInfo.packageName;
Log.i(TAG, query_url);
category = getCategory(query_url);
Log.e("CATEGORY", category);
// store category or do something else
//}
return null;
}
private String getCategory(String query_url) {
try {
Document doc = Jsoup.connect(query_url).get();
Elements link = doc.select("a[class=\"hrTbp R8zArc\"]");
return link.text();
} catch (Exception e) {
Log.e("DOc", e.toString());
}
}
}
作為回報,您將獲得應用程序公司名稱和應用程序的類別
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.