2010-06-10 49 views
3

以下是上下文。 我想有一個免費版本和同一個應用程序的高級版本。當人們購買應用程序時,我希望他們能夠在不丟失數據的情況下進行「升級」,即應該在免費版本上安裝高級版本。 我想使用相同的代碼庫,只需切換設置即可構建高級版本。 Andoid Market不允許我將免費應用程序轉換爲付費應用程序,因此平凡選項不可用。如何處理從免費版本到付費版本的應用程序升級,同時保留任何數據

我很好奇,如果有人已經試過這個成功。 Android Market如何識別應用程序 - 它會認爲高級版本是不同的應用程序,只是並行安裝它?

回答

1

答案是:這不適用於Android電子市場,因爲市場不允許使用相同軟件包名稱上傳兩個應用程序。 Android不能欺騙安裝免費版本的高級版本並將其視爲升級。好消息:添加數據庫備份/恢復功能(將數據庫複製到SD卡並返回到應用程序文件夾)只需要幾行代碼。我的用戶將不得不併行安裝兩個版本,從免費版本備份數據庫並將其恢復到高級版本。

1

我的想法是這樣的:

  • 付費版本的android:versionCode應該是免費的android:versionCode +1
  • 兩者應該有相同的封裝。

當付費版本安裝後,它將取代免費版本。 其實它會更新它,因爲它有更高的android:versionCode

由於兩者具有相同的包裝,它們將被放置在同一文件夾(/data/data/your.package)中,因此付費應用程序將能夠訪問免費應用程序數據庫。

+1

聽起來似乎合理,這就是我會嘗試的。問題仍然在於Market是否允許我將不同版本的相同軟件包上傳爲2個不同的應用程序。如果一切都失敗了,我會採用數據庫轉儲的手動升級程序。 – cdonner 2010-06-10 04:12:00

+0

@cdonner:好點。我無法從我所在的位置上傳付費應用程序,所以我無法測試它。請讓我們知道他們是否可以擁有相同的軟件包名稱。 – Macarse 2010-06-10 04:17:07

+1

不幸的是,這是不可能的。這是我在嘗試上傳要創建的高級應用程序包時得到的消息:市場上的另一個應用程序具有相同的包名稱。轉到其他應用程序,然後單擊升級 – cdonner 2010-06-13 15:12:38

1

代替數據庫備份到和從SD卡(如由@cdonner建議的),這需要WRITE_EXTERNAL_STORAGE許可的,自由的應用程序可以暴露ContentProvider,其付費應用程序可用於傳輸數據。

一定要use permissions以保護您的內容。

相關問題