Spanish Auto Actualizacion del .apk (App)

xamminf

Member
Creo que al final, al menos en mi caso, he conseguido que el proceso de actualización quede "elegante". Como si del Market se tratara.
El "truco" está en lanzar el ExitApplication justo después del StartActivity(i). Parece que el lanzar la actualización sin que la aplicación estuviera cerrada era lo que provocaba el que luego no arrancara de nuevo.
A ver si alguno más podéis confirmar que así se soluciona.
(Yo sigo sin utilizar la librería pues aún no tuve tiempo a ponerme con ella)

B4X:
Public Sub SendInstallIntent
    If File.Exists(Starter.Provider.SharedFolder, ApkName) Then
        'File.copy(File.DirAssets, ApkName, Starter.Provider.SharedFolder, ApkName)
        Dim i As Intent
        If phone.SdkVersion >= 24 Then
            i.Initialize("android.intent.action.INSTALL_PACKAGE", Starter.Provider.GetFileUri(ApkName))
            i.Flags = Bit.Or(i.Flags, 1) 'FLAG_GRANT_READ_URI_PERMISSION
        Else
            i.Initialize(i.ACTION_VIEW, "file://" & File.Combine(Starter.Provider.SharedFolder, ApkName))
            i.SetType("application/vnd.android.package-archive")
        End If
        StartActivity(i)
        ExitApplication
    Else
        MsgboxAsync("Fichero de actualización no encontrado: " & ApkName, "AVISO")
    End If
End Sub
Nada, sigue sin abrime. Adjunto algunos hitos de mi codigo:

B4X:
Private Sub SendInstallIntent
    'Dim ApkName As String = "2nd_app.apk"
    Dim ApkName As String = "almacen_badname.apk"
    Log("Paso 4")
    'File.copy(File.DirAssets, ApkName, Starter.Provider.SharedFolder, ApkName)
    Log("Paso 5")
    Dim i As Intent
    If phone.SdkVersion >= 24 Then
        Log("Paso 6")
        i.Initialize("android.intent.action.INSTALL_PACKAGE", Starter.Provider.GetFileUri(ApkName))
        i.Flags = Bit.Or(i.Flags, 1) 'FLAG_GRANT_READ_URI_PERMISSION
        Log("Paso 6.1")
    Else
        Log("Paso 7")
        i.Initialize(i.ACTION_VIEW, "file://" & File.Combine(Starter.Provider.SharedFolder, ApkName))
        i.SetType("application/vnd.android.package-archive")
    End If
    Log("Paso 8")
    StartActivity(i)
    Log("Paso 9")
    ExitApplication
    Log("Paso 10")
End Sub

Muestra hasta "Paso 9" lo cual es correcto, porque debe hacer el ExitApplication

B4X:
'This code will be applied to the manifest file during compilation.
'You do not need to modify it in most cases.
'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136
AddManifestText(
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="28"/>
<supports-screens android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:anyDensity="true"/>)
SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$")
'End of default text.

AddManifestText(<uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    android:maxSdkVersion="28" />
)

AddApplicationText(
  <provider
  android:name="android.support.v4.content.FileProvider"
  android:authorities="$PACKAGE$.provider"
  android:exported="false"
  android:grantUriPermissions="true">
  <meta-data
  android:name="android.support.FILE_PROVIDER_PATHS"
  android:resource="@xml/provider_paths"/>
  </provider>
)
CreateResource(xml, provider_paths,
   <files-path name="name" path="shared" />
)
AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)


AddPermission(android.permission.MY_PACKAGE_REPLACED)
 
Top