Italian Libreria appUpdate

Sabotto

Well-Known Member
Licensed User
Ho estrapolato la classe dalla libreria e l'ho modificata un po per mio uso personale (specie per i Log).
Inoltre ho creato un progettino di test con una b4xpage.
Ma giustamente nel file manifest c'è un riferimento a "newinst2.bas" che non uso e mi dà errore
Posso non considerarlo? Come le sostituisco, se servono, le istruzioni:

B4X:
Sub Service_Start (StartingIntent As Intent)
       If StartingIntent.Action = "android.intent.action.MY_PACKAGE_REPLACED" Then
               pkg = GetPackageName
                MyAppReload
    End If
End Sub

'e nel manifest
AddReceiverText(newinst2,
<intent-filter>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
</intent-filter>)

(volevo chiedere a @udg direttamente ma ho letto che è a palermo in vacanza... )
 
Last edited:

udg

Expert
Licensed User
Longtime User
Ciao, partirò tra un mese.. :)
Newinst2 è il service che viene chiamato da Android quando rileva l'evento MY_PACKAGE_REPLACED.
Il suo scopo è far ripartire l'app una volta aggiornata. Se non ti occorre, puoi eliminarlo e così pure la sua presenza nel Manifest.
Avresti una classe che cerca una nuova versione e la scarica poi chiede all'utente di aggiiornarla, ma indipendentemente da cosa scelga di fare l'utente, resta in esecuzione la "vecchia" copia dell'app.
 

Sabotto

Well-Known Member
Licensed User
Posso lasciarla allora. E' Utile!
Ma posso farlo (cioè aggiungerla al progetto) anche se uso B4xPage e non le Activity?
 

udg

Expert
Licensed User
Longtime User
In teoria dovrebbe funzionare perché ciò che fa è lanciare Main (per cui la nuova versione dell'app partirebbe da zero, come appena lanciata).
Non ho mai avuto il tempo di aggiornare il mio esempio in formato B4xPages, quindi temo per te che farai da cavia..

Ricorda, appunto, che si riparte da zero e quindi non vengono preservati eventuali dati o elementi presenti nelle varie Pages. Non è diverso da quanto avveniva nel modello Activity, ma meglio ricordarlo perché ormai siamo abituati a pensere alle Pages come qualcosa che rimane attivo per tutto il tempo.

Diciamo che lo scopo della libreria è verificare se esiste una nuova versione di un'app, chiudere quella attuale e lanciare la nuova versione. In modo automatizzato piutttosto che manualmente.
 

Sabotto

Well-Known Member
Licensed User
Ho aggiunto il file newinst2.bas e pare funzionare tutto con l'app di test.
Ogni tanto, però, non capisco perchè, mi dice "App non installata poichè il pacchetto è in conflitto con un pacchetto esistente" e devo perforza disinstallarla e poi reinstallarla.
E' un'app che, ad ogni avvio, legge dei dati da internet e quindi disinstallando non cancello niente come dati da conservare, ma se fosse un'app che usa ad esempio un database, sarebbe un bel problema...
 
Last edited:

udg

Expert
Licensed User
Longtime User
Bisognerebbe capire cosa possa provocare il conflitto tra pacchetti e, soprattitto, cosa intendano per conflitto.
Magari una qualche forma di cache?
Leggi qui, magari è utile
 
Top