Spanish Fallo al grabar un archivo.bat [SOLUCIONADO]

oscarv

Member
Buenas tardes, tengo un ejemplo que descargue en donde se graba un archivo.bat en DirDefaultExternal, hasta ahi esta bien, el programa crea un archivo.bat en el que posteriormente se manipulan los datos, la misma estructura la pasoen un archivo nuevo y deja de generar el archivo.bat.
No entiendo, sera acaso que el ejemplo se genero con otra version mas antiguia de B4A?
Manejo la version 9.8 y el ejemplo es el siguiente :

------------------------------------------------------------------------------------------------------------------------
#Region Project Attributes
#ApplicationLabel: SaveVar2File
#VersionCode: 1
#VersionName:
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: False
#End Region

#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region

Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.


Dim Lista As List

End Sub

Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.

Private EditText1 As EditText
Private Button1 As Button
Private ListView1 As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
Activity.LoadLayout("Main")

If Lista.IsInitialized = False Then Lista.Initialize
Lista.Clear
If File.Exists(File.DirDefaultExternal, "score.txt") = True Then
Lista = File.ReadList(File.DirDefaultExternal, "score.txt")
For i = 0 To Lista.Size - 1
ListView1.AddSingleLine(Lista.Get(i))
Next 'i
End If

End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub


Sub Button1_Click
ListView1.AddSingleLine(EditText1.Text)
Lista.Add(EditText1.Text)
File.WriteList(File.DirDefaultExternal, "score.txt", Lista)
End Sub

----------------------------------------------------------------------------------------
Gracias de antemano!!!
 

josejad

Expert
Licensed User
Longtime User
Hola oscarv:

Por favor, cuando escribas código, ponlo entre etiquetas [code]tu código aquí [/code]. Si puedes editar tu post para ponerle las etiquetas, será más claro.
Probablemente el ejemplo que has probado tenga en el manifest una versión anterior de android que aún no usaba Runtime Permissions.
Échale un ojo a este tutorial:

Dos opciones:
1.- Modifica tu manifest en tu versión para que sea igual al del ejemplo en esta línea:
B4X:
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="26"/>
Si no vas a subir la app a google play, te puede valer. Quizás si lo instalas en una versión más moderna te salga un mensaje de que tu app es para una versión antigua de android.
2.- Usa runtime permissions (el tutorial que te he puesto) y usa rp.GetSafeDirDefaultExternal("") en vez de File.DirDefaultExternal
1. Use RuntimePermissions.GetSafeDirDefaultExternal("") instead of File.DirDefaultExternal. The parameter passed is an optional subfolder that will be created under the default folder.

2. Add this code to the manifest editor:
B4X:

AddManifestText(
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="19" />
)
The explanation for this is that GetSafeDirDefaultExternal doesn't require any permission on Android 4.4+ (API 19) and requires the WRITE_EXTERNAL_STORAGE on older versions. The code above adds the permission to older devices.

You only need to deal with WRITE_EXTERNAL_STORAGE at runtime if you need access to a folder other than the app's default external folder.
 

oscarv

Member
B4X:
#Region Project Attributes
#ApplicationLabel: SaveVar2File
#VersionCode: 1
#VersionName:
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: False
#End Region

#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region

Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.


Dim Lista As List

End Sub

Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.

Private EditText1 As EditText
Private Button1 As Button
Private ListView1 As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
Activity.LoadLayout("Main")

If Lista.IsInitialized = False Then Lista.Initialize
Lista.Clear
If File.Exists(File.DirDefaultExternal, "score.txt") = True Then
Lista = File.ReadList(File.DirDefaultExternal, "score.txt")
For i = 0 To Lista.Size - 1
ListView1.AddSingleLine(Lista.Get(i))
Next 'i
End If

End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub


Sub Button1_Click
ListView1.AddSingleLine(EditText1.Text)
Lista.Add(EditText1.Text)
File.WriteList(File.DirDefaultExternal, "score.txt", Lista)
End Sub


Gracias José, efectivamente era una versión vieja y ya lo solucione con tu consejo, gracias de nuevo
 
Top