android - 如何仅在 Android 上过滤已安装的游戏?

标签 android google-play android-package-managers

Here描述了如何使用 PackageManager 获取 Android 上所有已安装应用程序的列表。 .
我想得到这个完整的列表,按所有已安装的“游戏”过滤。如何过滤“游戏”类别的所有已安装应用程序

最佳答案

您需要解析每个应用程序网页以获取其类型,然后从应用程序类型中区分游戏类型。
你可以使用 Jsoup Java HTML Parser这是一个示例代码

public class MainActivity extends AppCompatActivity {

public final static String GOOGLE_URL = "https://play.google.com/store/apps/details?id=";
public static final String ERROR = "error";

...


   private class FetchCategoryTask extends AsyncTask<Void, Void, Void> {

       private final String TAG = FetchCategoryTask.class.getSimpleName();
       private PackageManager pm;
       private ActivityUtil mActivityUtil;

       @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 = GOOGLE_URL + packageInfo.packageName;
               Log.i(TAG, query_url);
               category = getCategory(query_url);
               // store category or do something else
           }
           return null;
        }


        private String getCategory(String query_url) {
           boolean network = mActivityUtil.isNetworkAvailable();
           if (!network) {
               //manage connectivity lost
               return ERROR;
           } else {
               try {
                   Document doc = Jsoup.connect(query_url).get();
                   Element link = doc.select("span[itemprop=genre]").first();
                   return link.text();
               } catch (Exception e) {
                   return ERROR;
               }
           }
        }
    }  
}
你会发现类似的东西
<a class="r2Osbf" href="/store/apps/category/GAME_RACING" title="Racing">Racing</a>
...
"applicationCategory":"GAME_RACING"
因此,如果类别包含“游戏”文本,那么它就是一个游戏。
更新:看一下这个
screenshot1

关于android - 如何仅在 Android 上过滤已安装的游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69841621/

相关文章:

android - Google Android - 如何确定 3g 和 2g 是否打开

android - 如何将 OK Google 语音查询连接到我的应用程序

android - NotificationCompat.Builder setLights();不工作

android - PackageManager.getInstalledApplications(0);在安卓 7.0

android - 在 android 上以编程方式安装 APK

android - 如何使用包管理器为应用程序列表创建选择器

android - 那么 Android 3.0 中 Fragments 的确切优势是什么?

java - 此版本不符合 Google Play 64 位要求。 native java 应用程序的所有 .so 均已存在

android - 发布应用程序前的最终 list

android - 是否有 Rest API 来验证应用内购买?