studio - minsdkversion android version
Verificando la versión de mi aplicación programáticamente en Android market (2)
Google Play no proporciona ninguna API oficial para recuperar metadatos. Sin embargo, puede consultar la API no oficial en http://code.google.com/p/android-market-api/ .
Específicamente, eche un vistazo a la página Wiki HowToSearchApps . La respuesta a la consulta contiene información de la versión:
{
"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": [
...
Actualmente estoy revisando el código de la versión de la aplicación en el lanzamiento y lo comparo con el código de la versión más reciente en mi servidor y, en base a esta coincidencia, envío al usuario para obtener la última actualización de Android Market.
Funciona bien, pero mi problema es que tengo que cambiar manualmente el código de la última versión en mi servidor y no sé exactamente cuándo se activará una nueva versión de APK
en el mercado.
¿Hay alguna forma de verificar el código de la versión de la aplicación en Android market directamente, de modo que pueda enviar al usuario directamente al mercado cuando se active un nuevo apk?
Podemos hacer una comparación de patrones para obtener la versión de la aplicación desde playStore.
Para coincidir con el último patrón de google playstore, es decir <div class="BgcNfc">Current Version</div><span class="htlgb"><div><span class="htlgb">XXX</span></div>
primero tenemos que coincidir con la secuencia del nodo anterior y luego, desde la secuencia anterior, obtener el valor de la versión. A continuación se muestra el fragmento de código para el mismo:
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;
}
Conseguí esto resuelto a través de esto. Espero que ayude.