目前,我正在检查发布时的应用程序版本代码,并将其与我服务器上的最新版本代码进行匹配,基于此匹配,我将发送给用户以从Android市场获取最新更新。
它运行良好,但我的问题是,我必须手动更改服务器上的最新版本代码,我不知道新版本的APK在市场上激活的确切时间。
有没有办法在Android市场中直接检查应用的版本代码,这样当新的apk被激活时,我可以直接将用户发送到市场?
发布于 2012-08-23 20:31:26
Google Play不提供任何用于检索元数据的官方API。但是,您可以在http://code.google.com/p/android-market-api/上查看非官方的API。
具体来说,请看一下维基页面HowToSearchApps。对查询的响应包含版本信息:
{
"app": [
{
"rating": "4.642857142857143",
"title": "Ruboto IRB",
"ratingsCount": 14,
"creator": "Jan Berkel",
"appType": "APPLICATION",
"id": "9089465703133677000",
"packageName": "org.jruby.ruboto.irb",
"version": "0.1",
"versionCode": 1,
"creatorId": "\"Jan Berkel\"",
"ExtendedInfo": {
"category": "Tools",
"permissionId": [
...发布于 2018-05-23 11:36:11
我们可以进行模式匹配,以便从playStore获取应用程序版本。
为了匹配来自google playstore ie <div class="BgcNfc">Current Version</div><span class="htlgb"><div><span class="htlgb">X.X.X</span></div>的最新模式,我们首先必须匹配上面的节点序列,然后从上面的序列中获得版本值。下面是same的代码片段:
private String getAppVersion(String patternString, String inputString) {
try{
//Create a pattern
Pattern pattern = Pattern.compile(patternString);
if (null == pattern) {
return null;
}
//Match the pattern string in provided string
Matcher matcher = pattern.matcher(inputString);
if (null != matcher && matcher.find()) {
return matcher.group(1);
}
}catch (PatternSyntaxException ex) {
ex.printStackTrace();
}
return null;
}
private String getPlayStoreAppVersion(String appUrlString) {
final String currentVersion_PatternSeq = "<div[^>]*?>Current\\sVersion</div><span[^>]*?>(.*?)><div[^>]*?>(.*?)><span[^>]*?>(.*?)</span>";
final String appVersion_PatternSeq = "htlgb\">([^<]*)</s";
String playStoreAppVersion = null;
BufferedReader inReader = null;
URLConnection uc = null;
StringBuilder urlData = new StringBuilder();
final URL url = new URL(appUrlString);
uc = url.openConnection();
if(uc == null) {
return null;
}
uc.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
inReader = new BufferedReader(new InputStreamReader(uc.getInputStream()));
if (null != inReader) {
String str = "";
while ((str = inReader.readLine()) != null) {
urlData.append(str);
}
}
// Get the current version pattern sequence
String versionString = getAppVersion (currentVersion_PatternSeq, urlData.toString());
if(null == versionString){
return null;
}else{
// get version from "htlgb">X.X.X</span>
playStoreAppVersion = getAppVersion (appVersion_PatternSeq, versionString);
}
return playStoreAppVersion;
}我通过这个解决了这个问题。希望这能有所帮助。
https://stackoverflow.com/questions/12091534
复制相似问题