繁体   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