Programming access to Android Market
如果你在Android Market上发布了程序,怎么通过程序访问,查看程序的信息呢?谷歌大神为我们提供了--An open-source API for the Android Market,另外,也给Ruby和PHP都留了接口,当然了访问是需要Google帐户滴,更多信息请看考: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: A google account is required. 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 package using : Stringquery="pname:<package>"; By developper name : Stringquery="pub:<name>"; String query = "pname:com.luckyxmobile.timers4me";// 通过包名查找程序 MarketSessionsession=newMarketSession(); session.login("yourgmailaccount","yourpassword"); AppsRequestappsRequest=AppsRequest.newBuilder().setQuery(query).setStartIndex(0).setEntriesCount(10).setWithExtendedInfo(true).build(); session.append(appsRequest,newMarketSession.Callback<AppsResponse>(){ @Override publicvoidonResult(ResponseContextcontext,AppsResponseresponse){ TextViewtext=(TextView)findViewById(R.id.text); Stringid=response.getApp(0).getId(); StringcreatorID=response.getApp(0).getCreatorId(); Stringcreator=response.getApp(0).getCreator(); StringpackageName=response.getApp(0).getPackageName(); Stringprice=response.getApp(0).getPrice(); Stringrating=response.getApp(0).getRating(); intratingCount=response.getApp(0).getRatingsCount(); Stringtitle=response.getApp(0).getTitle(); Stringversion=response.getApp(0).getVersion(); intversionCode=response.getApp(0).getVersionCode(); intserializedSize=response.getApp(0).getSerializedSize(); ExtendedInfoextendedInfo=response.getApp(0).getExtendedInfo(); text.setText("id:"+id+"\nCreatorId:"+creatorID +"\nCreator:"+creator+"\nPackageName:"+packageName+"\nPrice:"+price+"\nrating:"+rating+"\nRatingCount:"+ratingCount+"\ntitle:" +title+"\nVersion:"+version+"\nversionCode:" +versionCode+"\nDownloadsCount:" +extendedInfo.getDownloadsCount() +"\nDownloadsCountText:"+extendedInfo.getDownloadsCountText()+"\nInstallSize:"+extendedInfo.getInstallSize() +"\nSerializedSize:"+serializedSize+"\nDecription:"+extendedInfo.getDescription()+"\nContactEmail:"+extendedInfo.getContactEmail()+"\nContactPhone:"+extendedInfo.getContactPhone()+"\nContactWebsite:" +extendedInfo.getContactWebsite()); } }); session.flush();//发送并刷新 这是Timers4Me的运行结果: HowToGetAppComments: CommentsRequestcommentsRequest=CommentsRequest.newBuilder().setAppId("7065399193137006744").setStartIndex(0).setEntriesCount(10).build();session.append(commentsRequest,newCallback<CommentsResponse>(){ @OverridepublicvoidonResult(ResponseContextcontext,CommentsResponseresponse){ System.out.println("Response:"+response); //response.getComments(0).getAuthorName() //response.getComments(0).getCreationTime() //... }}); session.flush(); HowToGetAppScreenshot : GetImageRequestimgReq=GetImageRequest.newBuilder().setAppId("-7934792861962808905").setImageUsage(AppImageUsage.SCREENSHOT).setImageId("1").build(); session.append(imgReq,newCallback<GetImageResponse>(){ @OverridepublicvoidonResult(ResponseContextcontext,GetImageResponseresponse){ try{ FileOutputStreamfos=newFileOutputStream("icon.png"); fos.write(response.getImageData().toByteArray()); fos.close(); }catch(Exceptionex){ ex.printStackTrace(); }}}); session.flush(); 以上只是抛砖引玉,更多精彩,只有动手才能看到,good luck! 本文转自 breezy_yuan 51CTO博客,原文链接:http://blog.51cto.com/lbrant/431834,如需转载请自行联系原作者