Spanish Un par de dudas...

Descartex

Well-Known Member
Licensed User
Longtime User
Muy buenas, gente!!!

Pues nada, que seguramente lo he pasado por alto, pero por mas que busco no encuentro las 2 cosinas que os cuento:
1.- Que hay que hacer para que la aplicacion, al instalarse, cree un acceso directo en el "escritorio"??
2.- He tenido que modificar la estructura de mi base de datos sqlite, como puedo hacer que cuando instale la nueva versión, machaque la anterior base de datos??? Lo he intentado mediante codigo, pero me la cargo cada vez que abro el programa :p

Un saludo.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola:


1.- Que hay que hacer para que la aplicacion, al instalarse, cree un acceso directo en el "escritorio"??

Tienes que añadir esto al manifest:

B4X:
<activity android:windowSoftInputMode="stateHidden" android:launchMode="singleTop" android:name="shortcutactivity"
  android:label="Add Shortcut" android:screenOrientation="unspecified">
        <intent-filter>
                <action android:name="android.intent.action.CREATE_SHORTCUT"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
      </activity>

android:name es el nombre en minúsculas de la actividad de acceso directo.
android:label es el título que aparecerá en la lista de accesos directos

Luego en el código debes poner:

B4X:
Sub Activity_Create(FirstTime As Boolean)
Dim shortcutIntent As Intent
shortcutIntent.Initialize("", "")
shortcutIntent.SetComponent("anywheresoftware.b4a.samples.test/.main") ' <--- cambiar para coincidir con el nombre del paquete / y activity

shortcutIntent.PutExtra("from_shortcut", True)
Dim in As Intent
in.Initialize("", "")
in.PutExtra("android.intent.extra.shortcut.INTENT", shortcutIntent)
in.PutExtra("android.intent.extra.shortcut.NAME", "Prueba Acceso Directo")
in.PutExtra("android.intent.extra.shortcut.ICON", LoadBitmap(File.DirAssets, "LogoPequeño.png"))
 
  Activity.SetActivityResult(-1, in)
  Activity.Finish

End Sub



Despues debes comprobar si se puso en marcha

B4X:
Sub Activity_Resume
  Dim in As Intent
  in = Activity.GetStartingIntent
  Log(in)
  If in.HasExtra("from_shortcut") AND in.GetExtra("from_shortcut") = True Then
      Msgbox("Acceso directo ejecutado", "")
  End If
End Sub


2.- He tenido que modificar la estructura de mi base de datos sqlite, como puedo hacer que cuando instale la nueva versión, machaque la anterior base de datos??? Lo he intentado mediante codigo, pero me la cargo cada vez que abro el programa

Crea un archivo donde pongas la versión de la base de datos, cuando arranques comparala con la actual (pon el valor en alguna variable) , luego si la versión es menor machaca la antigua y graba el fichero con la versión actual, asi cuando vuelvas a entrar al ser la misma no la machacará.
Digo lo de poner la version en el fichero, por que asi cada vez que actualices la base de datos solo tendras que modifcar en tu programa esa variable y asi machacaras la version anterior. Tambien puedes poner en el fichero el valor de una variable a True o False, pero poniendo la versión la tienes para versiones posteriores

Saludos
 

Descartex

Well-Known Member
Licensed User
Longtime User
Gracias!!!!
Lo de la base de datos lo habia "parcheado" con el atributo de LastModified, pero suena "más mejor" con tu solucion.

Un saludo
 
Top