簡體   English   中英

android-market檢索空結果

[英]android-market retrieve empty results

我想收集有關特定應用程序中的一些數據

Google Play市場。

我使用了這個非官方的API:

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

這是我的代碼,基本上可以獲取應用程序名稱列表

並嘗試在每個應用程序上獲取其他數據:

public void printAllAppsData(ArrayList<AppHarvestedData> dataWithAppsNamesOnly)
{       
    MarketSession session = new MarketSession();
    session.login("[myGamil]","[myPassword]");
    session.getContext().setAndroidId("dead00beef");

    final ArrayList<AppHarvestedData> finalResults = new ArrayList<AppHarvestedData>();

    for (AppHarvestedData r : dataWithAppsNamesOnly)
    {
    String query = r.name;
    AppsRequest appsRequest = AppsRequest.newBuilder()
                                    .setQuery(query)
                                    .setStartIndex(0).setEntriesCount(10)
                                    //.setCategoryId("SOCIAL") 
                                    .setWithExtendedInfo(true)
                                    .build();

    session.append(appsRequest, new Callback<AppsResponse>() {
             @Override
             public void onResult(ResponseContext context, AppsResponse response) {

                      List<App> apps = response.getAppList(); 
                        for (App app : apps) { 
                                AppHarvestedData r = new AppHarvestedData(); 

                                r.title = app.getTitle();
                                r.description = app.getExtendedInfo().getDescription();
                                String tmp = app.getExtendedInfo().getDownloadsCountText();
                                tmp = tmp.replace('<',' ').replace('>',' ');
                                int indexOf = tmp.indexOf("-");
                                tmp = (indexOf == -1) ? tmp : tmp.substring(0, indexOf);
                                r.downloads = tmp.trim();
                                r.rating = app.getRating();
                                r.version = app.getVersion(); 
                                r.userRatingCount = String.valueOf(app.getRatingsCount()); 
                                finalResults.add(r);
                                }
                        }
             });
    session.flush();
    }

    for(AppHarvestedData res : finalResults)
    {           
            System.out.println(res.toString());
    }
}

}

我真的應該打電話給session.flush();session.flush(); 這一點?

結果,我所有的查詢都返回空集合,

即使我看到有一些名稱作為輸入。

當我僅發送一個硬編碼的應用程序名稱作為查詢時,它可以正常工作。

session.flush()關閉會話,您應該為每個查詢打開會話。 注意用戶可以鎖定幾分鍾,因此您應該有很多用戶可以查詢這些查詢。 如果您擁有AppId,則應使用該查詢:

  String query = r.name;
    AppsRequest appsRequest = AppsRequest.newBuilder()
                                    .setAppId("com.example.android")               
                                    .setWithExtendedInfo(true)
                                    .build();

    session.append(appsRequest, new Callback<AppsResponse>() {
             @Override
             public void onResult(ResponseContext context, AppsResponse response) {

                      List<App> apps = response.getAppList(); 
                        for (App app : apps) { 
                                AppHarvestedData r = new AppHarvestedData(); 

                                r.title = app.getTitle();
                                r.description = app.getExtendedInfo().getDescription();
                                String tmp = app.getExtendedInfo().getDownloadsCountText();
                                tmp = tmp.replace('<',' ').replace('>',' ');
                                int indexOf = tmp.indexOf("-");
                                tmp = (indexOf == -1) ? tmp : tmp.substring(0, indexOf);
                                r.downloads = tmp.trim();
                                r.rating = app.getRating();
                                r.version = app.getVersion(); 
                                r.userRatingCount = String.valueOf(app.getRatingsCount()); 
                                finalResults.add(r);
                                }
                        }
             });
    session.flush();
    }

如果您還想下載屏幕快照或圖像,則應調用以下查詢:

    GetImageRequest? imgReq; imgReq = GetImageRequest?.newBuilder().setAppId(appId).setImageUsage(AppImageUsage?.SCREENSHOT).setImageId("0").build();

session.append(imgReq, new Callback<GetImageResponse>() {
@Override public void onResult(ResponseContext? context, GetImageResponse? response) {
Log.d(tag, "------------------> Images response <----------------"); if(response != null) {
try {
//imageDownloader.download(image, holder.image, holder.imageLoader);
Log.d(tag, "Finished downloading screenshot 1...");
} catch(Exception ex) {
ex.printStackTrace();
}
} else {
Log.e(tag, "Response was null");
} Log.d(tag, "------------> End of Images response <------------");
}
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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