5

このコードを使用して、デバイスにインストールされているすべてのアプリケーションをフェッチするアプリケーションで作業しています:

final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
 mainIntent.addCategory("com.myapp.MY_CATEGORY");
 final List<ResolveInfo> pkgAppsList =getPackageManager().queryIntentActivities( mainIntent, 0);

ここで、アプリをカテゴリ別に分類したいと思います。私に提案してください。

4

2 に答える 2

0

これらのライブラリを使用して、一部のアプリのカテゴリを収集する AsyncTask を実現しました。

  • android-market-api-0.6

  • com.google.protobuf 2.4.1

このリンクでそれらを見つけることができます:

https://code.google.com/archive/p/android-market-api/downloads

http://mvnrepository.com/artifact/com.google.protobuf/protobuf-java

doInBackground() メソッドのコードは次のとおりです。

        final ArrayList<MarketApplication> results = new ArrayList<>();
        AccountManager am = AccountManager.get(MainActivity.this.getBaseContext());
        Account[] accounts = am.getAccountsByType("com.google");
        if (accounts.length > 0) {
            try {
                AccountManagerFuture<Bundle> accountManagerFuture =
                        am.getAuthToken(accounts[0], "android", null, MainActivity.this, null,
                                null);
                Bundle authTokenBundle = accountManagerFuture.getResult();
                String authToken =
                        authTokenBundle.getString(AccountManager.KEY_AUTHTOKEN).toString();

                MarketSession session = new MarketSession();
                session.setAuthSubToken(authToken);

                Market.AppsRequest appsRequest = Market.AppsRequest.newBuilder()
                        .setQuery(params[0])
                        .setStartIndex(0).setEntriesCount(10)
                        .setWithExtendedInfo(true)
                        .build();


                session.append(appsRequest, new MarketSession.Callback<Market.AppsResponse>() {
                    public void onResult(Market.ResponseContext context, Market.AppsResponse
                            response) {
                        for (int i = 0; i < response.getEntriesCount(); i++) {
                            MarketApplication marketApplication = new MarketApplication();
                            Market.App app = response.getApp(i);
                            marketApplication.setName(app.getTitle());
                            Market.App.ExtendedInfo extendedInfo = app.getExtendedInfo();
                            marketApplication.setCategory(extendedInfo.getCategory());
                            results.add(marketApplication);
                        }
                    }
                });
                session.flush();
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
        return results;

ExtendedInfo から取得したカテゴリ情報とアプリケーションの名前をカスタム クラスに追加しますMarketApplicationparams[0]対象のアプリ名などのクエリ文字列です。開発者が特定のクエリを作成するのに役立つ wiki ページがあります。

https://code.google.com/archive/p/android-market-api/wikis/HowToSearchApps.wiki

このサービスでは、Android マニフェストに次のアクセス許可を追加する必要があることに注意してください。

 <uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.USE_CREDENTIALS"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
于 2016-02-26T23:38:22.093 に答える