Programming access to Android Market
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://lbrant.blog.51cto.com/2400264/431851
再次写这个是非常郁闷的,主要怪我,live writter 2011还不支持,辛辛苦苦写了半天,不小心按住了刷新键,结果写的东西全没了,虽然很气愤,虽然手已经冰凉,还是坚持又整理了一遍,也希望51CTO以后能随时保存草稿,这是一个非常严重的问题:
如果你已经在Android Market上发布了应用程序,怎么通过编程方式访问Android Market呢?谷歌大神已经为我们提供好了接口-An open-source API for the Android Market,不仅Android程序可以访问, Ruby 和PHP也提供了借口,更多信息请参考:http://code.google.com/p/android-market-api/
OK,废话少说,That‘s it!
Current progress
- You can browse market with any carrier or locale you want.
- Search for apps using keywords or package name.
- Retrieve an app info using an app ID.
- Retrieve comments using an app ID.
- Get PNG screenshots and icon
Requirement
- *(1) A Google Account
- *(2) Include androidmarketapi-X.Y.jar and protobuf-java-X.Y.Z.jar in your classpath,
下载地址:http://code.google.com/p/android-market-api/downloads/list
要把这两个JAR导入到项目中去.由于代码比较好理解,就不添加注释了:-)
HowToSearchApps:
You can search by using :
By package name;
- String query = "pname:<package>";
By developper name :
- String query = "pub:<name>";
通过包名查看程序关键代码:
1. String query = "pname:com.luckyxmobile.timers4me";// 通过包名查找程序
2. MarketSession session = new MarketSession();
3. session.login("your gmail account", "your password");
4. AppsRequest appsRequest = AppsRequest.newBuilder().setQuery(query)
5. .setStartIndex(0).setEntriesCount(10).setWithExtendedInfo(true).build();
6. session.append(appsRequest, new MarketSession.Callback<AppsResponse>() {
7. @Override
8. public void onResult(ResponseContext context, AppsResponse response) {
9. TextView text = (TextView) findViewById(R.id.text);
10. String id = response.getApp(0).getId();
11. String creatorID = response.getApp(0).getCreatorId();
12. String creator = response.getApp(0).getCreator();
13. String packageName = response.getApp(0).getPackageName();
14. String price = response.getApp(0).getPrice();
15. String rating = response.getApp(0).getRating();
16. int ratingCount = response.getApp(0).getRatingsCount();
17. String title = response.getApp(0).getTitle();
18. String version = response.getApp(0).getVersion();
19. int versionCode = response.getApp(0).getVersionCode();
20. int serializedSize = response.getApp(0).getSerializedSize();
21. ExtendedInfo extendedInfo = response.getApp(0).getExtendedInfo();
22. text.setText("id:" + id + "\nCreatorId:" + creatorID
23. + "\nCreator:" + creator + "\nPackageName:"
24. + packageName + "\nPrice:" + price + "\nrating:"
25. + rating + "\nRatingCount:" + ratingCount + "\ntitle:"
26. + title + "\nVersion:" + version + "\nversionCode:"
27. + versionCode + "\nDownloadsCount:"
28. + extendedInfo.getDownloadsCount()
29. + "\nDownloadsCountText:"
30. + extendedInfo.getDownloadsCountText()
31. + "\nInstallSize:" + extendedInfo.getInstallSize()
32. + "\nSerializedSize:" + serializedSize
33. + "\nDecription:" + extendedInfo.getDescription()
34. + "\nContactEmail:" + extendedInfo.getContactEmail()
35. + "\nContactPhone:" + extendedInfo.getContactPhone()
36. + "\nContactWebsite:"
37. + extendedInfo.getContactWebsite());
38. }
39. });
40. .flush();//发送并刷新
运行结果:
HowToGetAppComments
1. CommentsRequest commentsRequest = CommentsRequest.newBuilder().setAppId("7065399193137006744") .setStartIndex(0).setEntriesCount(10)build();
2. session.append(commentsRequest, new Callback<CommentsResponse>() {
3. @Override
4. public void onResult(ResponseContext context, CommentsResponse response) {
5. System.out.println("Response : " + response);
6. // response.getComments(0).getAuthorName()
7. // response.getComments(0).getCreationTime()
8. // ...
9. } });
10. session.flush();
HowToGetAppScreenshot
1. GetImageRequest imgReq = GetImageRequest.newBuilder().setAppId("-7934792861962808905").setImageUsage(AppImageUsage.SCREENSHOT).setImageId("1").build();
2. session.append(imgReq, new Callback<GetImageResponse>() {
3. @Override
4. public void onResult(ResponseContext context, GetImageResponse response) {
5. try {
6. FileOutputStream fos = new FileOutputStream("icon.png");
7. fos.write(response.getImageData().toByteArray());
8. fos.close();
9. } catch(Exception ex) {
10. ex.printStackTrace();
11. }
12. } });
13. session.flush();
最后提醒一下哦,不要忘记在配置文件中加上访问Internet的权限,当然了,我只是抛砖引玉的作用,动手才能更加精彩,Good luck!
本文出自 “超越梦想” 博客,请务必保留此出处http://lbrant.blog.51cto.com/2400264/431851