簡體   English   中英

Android:確定已安裝應用的類別

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM