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