天天看點

Programming access to Android Market

再次寫這個是非常郁悶的,主要怪我,live writter 2011還不支援,辛辛苦苦寫了半天,不小心按住了重新整理鍵,結果寫的東西全沒了,雖然很氣憤,雖然手已經冰涼,還是堅持又整理了一遍,也希望51CTO以後能随時儲存草稿,這是一個非常嚴重的問題:

OK,廢話少說,That‘s it!

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

*(1) A Google Account

*(2) Include androidmarketapi-X.Y.jar and protobuf-java-X.Y.Z.jar in your classpath,            

要把這兩個JAR導入到項目中去.由于代碼比較好了解,就不添加注釋了:-)

HowToSearchApps:

 You can search by using :

By package name;

String query = "pname:<package>";  

 By developper name :

String query = "pub:<name>"; 

 通過包名檢視程式關鍵代碼:

String query = "pname:com.luckyxmobile.timers4me";// 通過包名查找程式  

MarketSession session = new MarketSession();  

session.login("your gmail account", "your password");  

AppsRequest appsRequest = AppsRequest.newBuilder().setQuery(query)  

.setStartIndex(0).setEntriesCount(10).setWithExtendedInfo(true).build();  

session.append(appsRequest, new MarketSession.Callback<AppsResponse>() {  

@Override 

public void onResult(ResponseContext context, AppsResponse response) {  

TextView text = (TextView) findViewById(R.id.text);  

String id = response.getApp(0).getId();  

String creatorID = response.getApp(0).getCreatorId();  

String creator = response.getApp(0).getCreator();  

String packageName = response.getApp(0).getPackageName();  

String price = response.getApp(0).getPrice();  

String rating = response.getApp(0).getRating();  

int ratingCount = response.getApp(0).getRatingsCount();  

String title = response.getApp(0).getTitle();  

String version = response.getApp(0).getVersion();  

int versionCode = response.getApp(0).getVersionCode();  

int serializedSize = response.getApp(0).getSerializedSize();  

ExtendedInfo extendedInfo = 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());  

}  

});  

.flush();//發送并重新整理 

運作結果:

HowToGetAppComments  :

CommentsRequest commentsRequest = CommentsRequest.newBuilder().setAppId("7065399193137006744") .setStartIndex(0).setEntriesCount(10)build();         

session.append(commentsRequest, new Callback<CommentsResponse>() {   

@Override      

public void onResult(ResponseContext context, CommentsResponse response) {    

System.out.println("Response : " + response);      

// response.getComments(0).getAuthorName()       

// response.getComments(0).getCreationTime()       

// ...      

} });   

session.flush(); 

HowToGetAppScreenshot   :

GetImageRequest imgReq = GetImageRequest.newBuilder().setAppId("-7934792861962808905").setImageUsage(AppImageUsage.SCREENSHOT).setImageId("1").build();       

session.append(imgReq, new Callback<GetImageResponse>() {                                                       

@Override         

public void onResult(ResponseContext context, GetImageResponse response) {  

try {                                                

FileOutputStream fos = new FileOutputStream("icon.png");                                   

fos.write(response.getImageData().toByteArray());                                        

fos.close();                                  

} catch(Exception ex) {                           

ex.printStackTrace();                                       

  }        

session.flush();  

最後提醒一下哦,不要忘記在配置檔案中加上通路Internet的權限,當然了,我隻是抛磚引玉的作用,動手才能更加精彩,Good luck!

本文轉自 breezy_yuan 51CTO部落格,原文連結:http://blog.51cto.com/lbrant/431851,如需轉載請自行聯系原作者

繼續閱讀