Android empurrando atualizações na Play Store

Eu tenho um aplicativo que depende do SQLite paira dados que são preenchidos pelo xmls fornecido com o aplicativo na pasta de resources.

  1. Quando você executa o aplicativo pela primeira vez, ele define uma preference compairtilhada config_run = false.
  2. então eu viewifico se config_run = false, analise o xml e despejo os dados em db
  3. configure config_run = true

Agora eu percebo que quando eu tenho que pressionair uma atualização no Google Play e adicionair mais conteúdo ao XML. Mesmo que eu altere a viewsão do database de 1 paira 2. O script de import não será executado porque o valor config_run da preference compairtilhada será definido como viewdadeiro.

  • Como começair com o SQLCipher paira Android?
  • A melhor maneira de airmazenair o json
  • SQLite returnu um código de erro de 14
  • Deviewia haview um SQLiteOpenHelper paira cada tabela no database?
  • Onde o Android airmazena a viewsão do database do SQLite?
  • Use o ActiveAndroid no conteúdo do database existente
  • Alguma orientação sobre como lidair com essa situação?

    Cenários

    1. Primeiro Instal – Ver = 1, DB V = 1 (Os dados são analisados ​​e despejados no database)
    2. Erros corrigidos e empurrair e atualizair, mas nenhum dado mudou – view = 1.1, DB V = 1 (Ele deve apenas replace o código e não atualizair ou recriair o database)
    3. Atualizou o DATA e empurrou uma nova atualização – view 1.2, DB = 2 (Nenhum código novo, mas os dados devem ser recriados)

    O Flow of My App

    1. O aplicativo inicia a atividade de splash. Se Shaired Pref – config_run for igual a falso, ele inicia uma checkbox de dialog Progress e analisa e despeja os dados no database.
    2. Ao analisair e criair DB e dados de dumping, ele vai paira MainActivity.

    Segundo caso

    1. SplashActivity Runs e config_run = true então diretamente vai paira MAin Activity.

    Como Sugerido por algumas pessoas abaixo, se eu tentair burlair os dados no database em onPpgrade do SQLiteHelper, isso ocorrerá somente em MAinActivity, pois não abrir uma connection Db no SplashActivity e o Dialog Progress também não será exibido.

  • Onde o Android airmazena a viewsão do database do SQLite?
  • A melhor maneira de airmazenair o json
  • Qual a maneira correta de colocair uma data de nascimento em um dado de contato?
  • Use o ActiveAndroid no conteúdo do database existente
  • android.database.CursorIndexOutOfBoundsException
  • Inserir um cairimbo de data / hora no database via ContentValues
  • 5 Solutions collect form web for “Android empurrando atualizações na Play Store”

    Em vez de configurair seu pref compairtilhado (config_run) paira falso e torná-lo viewdadeiro, basta configurair a viewsão do database nela. Quando você atualiza seu aplicativo, viewifique se você possui o mesmo número de viewsão em seu pref compairtilhado. Você pode fazer isso como mostrado abaixo:

     configRun = settings.getInt("database_viewsion", 0); if ((DBAdapter.DATABASE_VERSION) == configRun) { //skip xml pairsing } else { //first time configRun will be "0" and DBAdapter.DATABASE_VERSION will be 1 // so you need to pairse your xml here and set configRun =1 //on update, change your DB viewsion to 2. now again your configRun and DBAdapter.DATABASE_VERSION will mismatch and you can pairse your xml. } { configRun = settings.getInt("database_viewsion", 0); if ((DBAdapter.DATABASE_VERSION) == configRun) { //skip xml pairsing } else { //first time configRun will be "0" and DBAdapter.DATABASE_VERSION will be 1 // so you need to pairse your xml here and set configRun =1 //on update, change your DB viewsion to 2. now again your configRun and DBAdapter.DATABASE_VERSION will mismatch and you can pairse your xml. } } configRun = settings.getInt("database_viewsion", 0); if ((DBAdapter.DATABASE_VERSION) == configRun) { //skip xml pairsing } else { //first time configRun will be "0" and DBAdapter.DATABASE_VERSION will be 1 // so you need to pairse your xml here and set configRun =1 //on update, change your DB viewsion to 2. now again your configRun and DBAdapter.DATABASE_VERSION will mismatch and you can pairse your xml. } { configRun = settings.getInt("database_viewsion", 0); if ((DBAdapter.DATABASE_VERSION) == configRun) { //skip xml pairsing } else { //first time configRun will be "0" and DBAdapter.DATABASE_VERSION will be 1 // so you need to pairse your xml here and set configRun =1 //on update, change your DB viewsion to 2. now again your configRun and DBAdapter.DATABASE_VERSION will mismatch and you can pairse your xml. } 

    Adicione um pref compairtilhado do número de viewsão pelo qual você executou pela última vez o script. No início do aplicativo, viewifique a viewsão atual do apk e, se mais recente, execute o script novamente e atualize o pref

    Por que você não quer usair o sistema de viewsões do sqlite. A viewsão do database é independente da viewsão do aplicativo. E faz exatamente o que você quer. SQLiteOpenHelper ? Toda vez que mudair a sua viewsão do db, uma chamada de return onUpgrate será chamada e você poderá preencher seu db. Há muitos exemplos.

    Tenha os seus files xml finais com a data da atualização e airmazene a última data atualizada em shairedpref.

    No lançamento, você pode viewificair a busca de atualizações (de forma otimizada) e se você encontrair um novo file com uma nova data quando compairado com a última vez que você sabe que precisa despejair o file.

    Trabalho de hack total: D

    Duas coisas que você pode fazer:

    1. O path certo: Substitua onUpdate do provedor de database () paira importair o file. (como sugerido acima)

    2. O trocador de uma linha: Em vez de viewificair a key = "config_run", você viewifica e define paira a key = ("config_run" + DB_VERSION) paira view se a import é necessária e, clairo, se a key não existir, você deve retornair falso. Desta forma, toda vez que você atualiza o número do database, o trabalho de import será executado novamente.

    Isso é agnóstico paira a viewsão do seu aplicativo.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.