我自己的教育理由,我的Android應用程序出現問題。如何檢測Android應用程序是否已從版本x升級到y?
是否有現成的解決方案來檢測應用程序現在已經從版本x更新到y?因爲我只想在應用程序安裝在特殊版本之前遷移一次數據。
謝謝。
我自己的教育理由,我的Android應用程序出現問題。如何檢測Android應用程序是否已從版本x升級到y?
是否有現成的解決方案來檢測應用程序現在已經從版本x更新到y?因爲我只想在應用程序安裝在特殊版本之前遷移一次數據。
謝謝。
這是一個簡單的方法,可以解決您的問題。在您的代碼中,您可以輕鬆獲取應用程序versionCode和versionName。在您的家庭活動中,您檢查isAppUpdated()。如果當前APP VERSION_NAME與存儲的VERSION_NAME不匹配,那麼應用會更新。
下面是示例代碼:
保存版本名稱中的首選項:
public static void saveVersionNameAndCode(Context context){
try{
PackageInfo packageInfo = context.getPackageManager()
.getPackageInfo(context.getPackageName(), 0);
int versionCode = packageInfo.versionCode;
String versionName=packageInfo.versionName;
CommonTasks.showLog("Saving APP VersionCode and Version Name");
// SAVE YOUR DATA
}catch(Exception e){
}
}
檢查應用程序升級:
public static boolean isAppUpdated(Context context){
boolean result=false;
try{
PackageInfo packageInfo = context.getPackageManager()
.getPackageInfo(context.getPackageName(), 0);
int versionCode = packageInfo.versionCode;
String versionName=packageInfo.versionName;
String prevVersionName= GET STORED VERSION_NAME;
if(prevVersionName!=null && !prevVersionName.equals("") &&
!prevVersionName.equals(versionName)){
showLog("App Updated");
result=true;
}else{
showLog("App Not updated");
}
}catch(Exception e){
}
return result;
}
這裏,如果isAppUpdated()返回true意味着你的應用程序更新。
注意,檢查升級問題後,您必須更新sharedPreferences。 :)
**注意** prevVersionName.equals(「」)不應該有一個不在條件中,而應該和(&&)應該或(||)。 –
最簡單的方法是將最新版本的應用程序存儲在SharedPreferences中,並檢查應用程序何時啓動。
您可以通過BuildConfig.VERSION_CODE
獲取應用程序的當前版本代碼。
例如:
@Override
public void onStart() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
int lastKnownVersion = prefs.getInt("lastKnownAppVersion", 0);
if (lastKnownVersion < BuildConfig.VERSION_CODE) {
// Your app has been updated
prefs.edit().putInt("lastKnownAppVersion", BuildConfig.VERSION_CODE);
}
}
註冊一個BroadcastReceiver來監聽ACTION_MY_PACKAGE_REPLACED
意圖會告訴你,當你的包被替換(即更新),但不會告訴你以前安裝的版本。
所以,如果我們使用Splash活動,那麼我們需要把這個東西放在那裏? –
你需要提交共享偏好編輯器,它也應該在回答中提到 –
使用MY_PACKAGE_REPLACED廣播 –
如果你使用SQLite => http://stackoverflow.com/questions/2488813/how-to-do-database-schema-migrations-in-android –
謝謝,但數據庫版本沒有改變。 – EV221