В принципе, вы должны проверить последнюю версию приложения на рынке и версию приложения на устройстве и решить, есть ли обновление. Для делать это, пожалуйста, попробуйте следующее:
Вы должны использовать это для получения текущей версии (версия приложения на устройстве):
private String getCurrentVersion(){
PackageManager pm = this.getPackageManager();
PackageInfo pInfo = null;
try {
pInfo = pm.getPackageInfo(this.getPackageName(),0);
} catch (PackageManager.NameNotFoundException e1) {
e1.printStackTrace();
}
String currentVersion = pInfo.versionName;
return currentVersion;
}
И использовать это для получения последней версии в Google Play (взяты из https://stackoverflow.com/a/32942785/444991):
private class GetLatestVersion extends AsyncTask<String, String, String> {
String latestVersion;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
try {
//It retrieves the latest version by scraping the content of current version from play store at runtime
String urlOfAppFromPlayStore = "https://play.google.com/store/apps/details?id= your app package address";
Document doc = Jsoup.connect(urlOfAppFromPlayStore).get();
latestVersion = doc.getElementsByAttributeValue("itemprop","softwareVersion").first().text();
}catch (Exception e){
e.printStackTrace();
}
return latestVersion;
}
}
Затем, когда начинается ваше приложение, проверить их против друг друга, как это:
String latestVersion = "";
String currentVersion = getCurrentVersion();
Log.d(LOG_TAG, "Current version = " + currentVersion);
try {
latestVersion = new GetLatestVersion().execute().get();
Log.d(LOG_TAG, "Latest version = " + latestVersion);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
//If the versions are not the same
if(!currentVersion.equals(latestVersion)){
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("An Update is Available");
builder.setPositiveButton("Update", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Click button action
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=your app package address")));
dialog.dismiss();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Cancel button action
}
});
builder.setCancelable(false);
builder.show();
}
И покажите диалоговое окно обновления пользователя. Но убедитесь, что вы уже импортировали библиотеку jsoup.
Дополнительно: Для импорта jsoup библиотеки, выполните следующие действия:
1 Перейдите в меню
2 Структура проекта
3- левая сторона нажмите на приложение
4 Выберите вкладку Зависимости
5 файлов - нажмите на +
6 нажмите на библиотеку зависимости
7- Поиск "jsoup"
8- выбрать org.jsoup: jsoup и нажмите кнопку оК
Hi Jonathon Reinhart, Извините, я действительно не понимаю. Не могли бы вы объяснить мне? – Sathish
Это все время используется приложениями даже для собственных приложений Google. Иногда бэкэнд-сервис обновляется таким образом, который больше не совместим со старыми версиями приложений в дикой природе. Таким образом, может потребоваться сделать это в вашем приложении, если вы не хотите поддерживать 3-летние версии, потому что некоторые люди ничего не обновляют. –
Найдено решение здесь http://stackoverflow.com/questions/7298106/android-app-check-for-latest-app-version –