Jul 4, 2012 Replies: 118 A file handling library that includes support for rooted devices. MLfiles will use superuser as well as busybox or toolbox if they are installed. The correct system paths are automatically searched for available superuser packages. Attached is my file handling library for access to the Android file system. It includes a more complete Samba implementation for remote file access to windows or other samba servers. Below is a list of methods and variables available in the library. There is a simple example app in the zip to demonstrate some of the functions. works on rooted or non rooted devices. MLfiles is now Version 1.50. MLsmb is now Version 1.51. See the attachments at the end of this post. From version 1.50 MLfiles and MLsmb are separate libraries. If you are using both in your project, you'll need to check both libraries in the IDE. The jcifs samba library routines add over 300k to the size of an app. By separating the 2 libraries you get to choose when or if to use the samba library (MLsmb) or not. MLfiles Author: Jem Miller - Missing Link Software Version: 1.5 MLfiles Fields: ErrStr As String The StdErr interface used by most commands. This should contain any error message from the OS. FSerror As String The value of stderror is set to this string after each call if it is empty, there was no error. HaveBB As Boolean True if busybox is installed. HaveRoot As Boolean True if GetRoot succeeds. HaveTB As Boolean True if toolbox is installed. OutStr As String The StdOut interface returned by some commands. This will contain what would normally be text output to a linux terminal. fsStdOut As String Contains the Linux StdOut result of a command. This is what you would see in a Linux console if the command is successful. Methods: Escape (fname As String) As String Escapes spaces, "(" and ")" characters in a filename returns the original string if already escaped. Exists (Filename As String) As Boolean Checks to see if a file exists. Filename is the path and filename string Returns True on success GetDiskstats (Path As String) As String Returns information of the given partition or pathname as a string formatted as Size Used Free Blocksize each field is separated with a single space. For example: Code: Dim fs as MLFiles Dim tmp as String tmp = fs.GetDiskstats("/mnt/sdcard") In the example above, tmp Might return : 8G 57M 8G 4096 If busybox is present, the output will be in bytes for each field. Uses Root if available. GetExtSd As String Returns the location of the external SD card mount point. This is a best guess based upon the standards being adopted in later releases of Android. Returns an empty string if not found. GetFileDate (Fname As String) As Long Gets the last modified date and time of a file or directory. Returns the timestamp in milliseconds. GetFileExt (FName As String) As String Returns the file extension (if available) of the file FName otherwise returns the entire path and filename sent GetFileType (Fname As String) As String Gets the filetype of Fname. Returns file type as a String on success or Unknown on failure. Returns standard mime types such as: text/plain audio/mpeg text/XML image/jpeg as file types GetFreespace (Path As String) As Long Returns the available space of the given partition/disk as a Long Path is the mount point or directory within a partition Note that some partitions are protected and will not return a value. GetGigsFree (Path As String) As Double Returns the available space of the given partition/disk in gigabytes Path is the partition path or directory within a partition Returns the available space on the partition containing the Path in gigabytes. Note that some partitions are protected and will not return a value. GetPerms (fname As String) As String Example: perms = GetPerms(filename) Returns a Linux style permission string "rwxrwxrwx" rwx for each of owner, group, and others. Use - for no permission, like "rw-r--r--" for owner read write, group read, and others read. Works with files or directories. GetRoot Attempts to gain root access. Sets HaveRoot to True on success GetSymlink (Fname As String) As String Gets the target of a symbolic link in string format. IsReadable (Fname As String) As Boolean Returns True if file or directory is readable to this user process. IsWritable (Fname As String) As Boolean Returns True if file or directory is writable to this user process. ReadTxtFile (Fname As String) As String Reads a text file and returns its contents in a StringBuilder. Uses Root if available. RootCmd (Command As String, Args As String, StdOut As StringBuilder, StdErr As StringBuilder, useBB As Boolean) As Boolean Executes a system command or program through the root adapter. Uses standard permissions if root is not available. Command - the command to execute Args - the arguments to the command StdOut - the text that would appear in a linux console StdErr - any error text returned by the command useBB - use busybox for the command if available Returns true on success. Sdcard As String Returns the path to the external SD card if present as a string including the ending / like /mnt/sdcard/ returns an empty string if not present SdcardReady As String Returns a state string for the external sdcard. mounted = mounted and ready unmounted = card present but unmounted bad removal = sdcard removed without closing removed = no card present nofs = unformatted or unknown filesystem shared = mount point is currently shared with usb device unmountable = sdcard is present but damaged checking = media is being scanned mounted read only = sdcard is not writable SetFileDate (Fname As String, Time As Long) As Boolean Sets file date and time on Fname to Time in milliseconds. Returns True on success. Symlink (Linkname As String, Filename As String) As Boolean Creates the symbolic link Linkname from Filename as in Linux/Unix. Works on files or directories. Returns True on success. Uses Root if available. Touch (Fname As String) As Boolean Creates an empty file with the current date and time. Fname is the name of the file to create. If the file exists the datestamp is changed to NOW. Returns True on success. Uses root if available. WriteTxtFile (Fname As String, Txt As String) As Boolean Writes the contents of Txt to the file Fname. Fname must already exist or a FileNotFound exception is thrown. Uses root if available. chmod (Filename As String, permissions As String) As Boolean Sets file permissions for a file or directory. Requires correct user access or root. Permissions are as Linux chmod numeric value. 1 = execute 2 = write 4 = read 644 = owner read/write (4 + 2), group read, other read 755 = owner read/write/execute (4 + 2 + 1), group read/execute, other read,execute Uses Root if available. cp (Src As String, Dest As String) As Boolean Copy a file from Src to Dest Returns True on success. Uses Root if available. cpr (Src As String, Dest As String) As Boolean Recursive copy just like the Linux cp -r Copies all files and directories under the Src path to Dest. Works with directories, but is meaningless for files. Returns True on success. Uses Root if available. createZipFile (path As String) Creates a backup zip of the directory path dirEntries (Dir As String, Hidden As Boolean) As ArrayList Returns a list of formatted directory entries or an empty list on failure. As in : d---rwxr-x system sdcard_rw 0 2011-11-13 12:59 LOST.DIR Each element is in the form of a space separated string of permissions and type (drwxr-xr-x) where the first char indicates a directory, link, or regular file (d, l, or -). owner name group name file size date time file name Hidden is a boolean and will show ALL files hidden or not if True. Note that this method makes every attempt to fill in a size for symlinks and directories This means that you should always get 7 fields. Uses Root if available. extractZipFiles (zip_file As String, directory As String) Unzips a backup zipfile to directory. Creates the destination DIR if needed. extractZipFilesFromDir (zipName As String, fromDir As String, toDir As String) Unzips zipName from fromDir to toDir isDir (Path As String) As Boolean Returns true if Path is a directory isSymlink (Fname As String) As Boolean Returns True if file or directory is a symbolic link. mkdir (Dir As String) As Boolean Make a directory and any needed parent directories Returns True on success Uses Root if available. mv (Oldname As String, Newname As String) As Boolean Use to move or rename files or directories from Oldname to Newname. Returns True on success. Uses Root if available. rm (Fname As String) As Boolean Remove (delete) a file or directory Directories must be empty Returns True on success. Uses Root if available. rmrf (Fname As String) As Boolean Remove (delete) a directory recursively. ALL files and sub-directories will be deleted, EMPTY OR NOT. Returns True on success. Uses Root if available. zipPeek (zipname As String) As ArrayList Opens a zip file and returns the list of its contents in a list. zipname is the full path and filename to be displayed Returns a formatted string of : path/Name, compressed FileSize, and DateTime as a single semicolon separated string Permissions: android.permission.WRITE_EXTERNAL_STORAGE The MLsmb library: MLsmb Author: Jem Miller - Missing Link Software Version: 1.51 MLsmb Events: Success (Name as String As , Size as Long As ) Fields: FSerror As String Methods: Escape (fname As String) As String Escapes spaces, "(" and ")" characters in a filename Returns the original string if already escaped. Initialize Initializes internal variables SmbCopy (FromFile As String, ToFile As String, eventname As String) Copies a file TO or FROM the Samba server, including samba to samba copying. Calls the Success event when completed. The event contains the filename and file size as: varname_Success(Name as String, Size as Long) put any code you need to execute on successful copy in the event sub. eventname_Success(Name As String, Size As Long) SmbCredentials (Username As String, Password As String, Domain As String) Set the user name, password, and domain for a samba server. If set, this record will be passed to the server when the Smb methods are called. SmbDelete (Url As String, SmbFile As String) As Boolean Deletes a file on the Samba server Returns True on success. SmbIP (host As String) As String Returns the IP address of the Samba server SmbList (SmbUrl As String, Pattern As String) As ArrayList Returns a list of SmbFile types on the samba server. Check the FSerror string to see if authentication failed or is needed. SmbUrl = the SMB path to list Pattern = an optional wildcard search pattern SmbMove (From As String, To As String) As Boolean Moves or renames files or directories on the Samba server Returns True on success. mkSmbDirs (Dir As String) As Boolean Makes a directory on the Samba server. This method will create any missing elements of the new path. Returns True on success. smbInStream (Afile As String) As InputStream Creates an input stream from the file Afile that can be fed to another object. Returns null if not successful. Permissions: android.permission.INTERNET android.permission.WRITE_EXTERNAL_STORAGE SambaFile Fields: TYPE_COMM As Int TYPE_FILESYSTEM As Int TYPE_NAMED_PIPE As Int TYPE_PRINTER As Int TYPE_SERVER As Int TYPE_SHARE As Int TYPE_WORKGROUP As Int Methods: CanRead As Boolean True is the file or directory is readable. CanWrite As Boolean True if the directory or file can be written to. DiskFree As Long Returns the free space of this Samba share. GetPath As String Returns the SMB path to this file or directory GetServer As String Returns the Smaba server name GetShare As String Returns the share name GetType As Int Returns an Int representing the type of SMB object for this SambaFile from 0 through 6 TYPE_FILESYSTEM, a regular file or directory TYPE_WORKGROUP, A workgroup TYPE_SERVER, a Samba server TYPE_SHARE, a shared directory TYPE_PRINTER, a shared printer TYPE_NAMED_PIPE, a named pipe TYPE_COMM, a communications device IsFile As Boolean True if this is a file and not a directory. IsHidden As Boolean True if this file or directory is hidden. IsInitialized As Boolean LastModified As Long Returns the modify date of this file Name As String Returns the file name Parent As String Returns the parent directory ServerIp (Server As String) As String Returns the IP address of the server Size As Long Returns the file size isDir As Boolean Ckecks if this file is a directory. The jcifs.jar file used in this library is available HERE There are 2 test projects included in the zip file. One for MLfiles and one for MLsmb. Version 1.1 Many small changes have been made for efficiency. The GetRoot has been modified to try different methods of determining if a device has root access available. I added the Escape method in both the files and Samba objects to escape file names containing spaces, "(" and ")" characters. It returns the original string with no changes if nothing needs to be done, otherwise it escapes those characters with the "\" character so that linux and cifs can use the string. Version 1.2 Added 2 new methods and changed 1. Added GetGigsFree(String Path) This returns the freespace of a partition in gigabytes as a double Added GetFreespace(String Path) This returns the freespace of a partition in bytes as a Long Changed GetDiskFree(String Path) to GetDiskstats(String Path) It still returns a formatted STRING of values. Updated the libtest.b4a project. Version 1.3 Removed unused parameter from GetFreespace to avoid any confusion. Version 1.4 Changed OS calls to look for busybox by default. Samsung and others do not offer common OS calls in their ROMs, but (at least in Samsungs case) they include busybox on the device, which solves this problem. Version 1.41 Changed the cp and cpr methods. If the cp command is not present on the OS version, both use native methods to copy the file or do a recursive copy of the directory tree. These methods do not honor root access, so normal permissions are used. Version 1.42 Minor change to the GetGigsFree and GetFreespace methods to try to ensure they return accurate results. Version 1.43 Actually made version 1.42 changes work. About time! Version 1.44 Added the Exists method to test if a file or directory exists. Version 1.45 Fixes some zip extraction weirdness. NOTE: The order of fromDir and toDir have been changed! Also the destination directory will now be created if needed in both ExtractFilesFromDir() and ExtractFiles. Version 1.47 Added GetExtSd method to find a mounted external (add-on_ sd card. Lots or rewrites and optimizations. The Samba routines are mostly rewritten and are now very reliable. Better authentication in all samba methods as well. More error correction and detection. Version 1.50 Separated the local files and smb files into 2 libraries. MLsmb Version 1.51 Corrected headers that got changed during the library separation process. Attached MLsmb-1.51.zip to correct this issue. . Attachments MLFiles-1.50.zip MLFiles-1.50.zip 42.4 KB · Views: 1,684 MLsmb-1.51.zip MLsmb-1.51.zip 19.1 KB · Views: 1,369 Last edited: Sep 24, 2014 Click to expand...
A file handling library that includes support for rooted devices. MLfiles will use superuser as well as busybox or toolbox if they are installed. The correct system paths are automatically searched for available superuser packages. Attached is my file handling library for access to the Android file system. It includes a more complete Samba implementation for remote file access to windows or other samba servers. Below is a list of methods and variables available in the library. There is a simple example app in the zip to demonstrate some of the functions. works on rooted or non rooted devices. MLfiles is now Version 1.50. MLsmb is now Version 1.51. See the attachments at the end of this post. From version 1.50 MLfiles and MLsmb are separate libraries. If you are using both in your project, you'll need to check both libraries in the IDE. The jcifs samba library routines add over 300k to the size of an app. By separating the 2 libraries you get to choose when or if to use the samba library (MLsmb) or not. MLfiles Author: Jem Miller - Missing Link Software Version: 1.5 MLfiles Fields: ErrStr As String The StdErr interface used by most commands. This should contain any error message from the OS. FSerror As String The value of stderror is set to this string after each call if it is empty, there was no error. HaveBB As Boolean True if busybox is installed. HaveRoot As Boolean True if GetRoot succeeds. HaveTB As Boolean True if toolbox is installed. OutStr As String The StdOut interface returned by some commands. This will contain what would normally be text output to a linux terminal. fsStdOut As String Contains the Linux StdOut result of a command. This is what you would see in a Linux console if the command is successful. Methods: Escape (fname As String) As String Escapes spaces, "(" and ")" characters in a filename returns the original string if already escaped. Exists (Filename As String) As Boolean Checks to see if a file exists. Filename is the path and filename string Returns True on success GetDiskstats (Path As String) As String Returns information of the given partition or pathname as a string formatted as Size Used Free Blocksize each field is separated with a single space. For example: Code: Dim fs as MLFiles Dim tmp as String tmp = fs.GetDiskstats("/mnt/sdcard") In the example above, tmp Might return : 8G 57M 8G 4096 If busybox is present, the output will be in bytes for each field. Uses Root if available. GetExtSd As String Returns the location of the external SD card mount point. This is a best guess based upon the standards being adopted in later releases of Android. Returns an empty string if not found. GetFileDate (Fname As String) As Long Gets the last modified date and time of a file or directory. Returns the timestamp in milliseconds. GetFileExt (FName As String) As String Returns the file extension (if available) of the file FName otherwise returns the entire path and filename sent GetFileType (Fname As String) As String Gets the filetype of Fname. Returns file type as a String on success or Unknown on failure. Returns standard mime types such as: text/plain audio/mpeg text/XML image/jpeg as file types GetFreespace (Path As String) As Long Returns the available space of the given partition/disk as a Long Path is the mount point or directory within a partition Note that some partitions are protected and will not return a value. GetGigsFree (Path As String) As Double Returns the available space of the given partition/disk in gigabytes Path is the partition path or directory within a partition Returns the available space on the partition containing the Path in gigabytes. Note that some partitions are protected and will not return a value. GetPerms (fname As String) As String Example: perms = GetPerms(filename) Returns a Linux style permission string "rwxrwxrwx" rwx for each of owner, group, and others. Use - for no permission, like "rw-r--r--" for owner read write, group read, and others read. Works with files or directories. GetRoot Attempts to gain root access. Sets HaveRoot to True on success GetSymlink (Fname As String) As String Gets the target of a symbolic link in string format. IsReadable (Fname As String) As Boolean Returns True if file or directory is readable to this user process. IsWritable (Fname As String) As Boolean Returns True if file or directory is writable to this user process. ReadTxtFile (Fname As String) As String Reads a text file and returns its contents in a StringBuilder. Uses Root if available. RootCmd (Command As String, Args As String, StdOut As StringBuilder, StdErr As StringBuilder, useBB As Boolean) As Boolean Executes a system command or program through the root adapter. Uses standard permissions if root is not available. Command - the command to execute Args - the arguments to the command StdOut - the text that would appear in a linux console StdErr - any error text returned by the command useBB - use busybox for the command if available Returns true on success. Sdcard As String Returns the path to the external SD card if present as a string including the ending / like /mnt/sdcard/ returns an empty string if not present SdcardReady As String Returns a state string for the external sdcard. mounted = mounted and ready unmounted = card present but unmounted bad removal = sdcard removed without closing removed = no card present nofs = unformatted or unknown filesystem shared = mount point is currently shared with usb device unmountable = sdcard is present but damaged checking = media is being scanned mounted read only = sdcard is not writable SetFileDate (Fname As String, Time As Long) As Boolean Sets file date and time on Fname to Time in milliseconds. Returns True on success. Symlink (Linkname As String, Filename As String) As Boolean Creates the symbolic link Linkname from Filename as in Linux/Unix. Works on files or directories. Returns True on success. Uses Root if available. Touch (Fname As String) As Boolean Creates an empty file with the current date and time. Fname is the name of the file to create. If the file exists the datestamp is changed to NOW. Returns True on success. Uses root if available. WriteTxtFile (Fname As String, Txt As String) As Boolean Writes the contents of Txt to the file Fname. Fname must already exist or a FileNotFound exception is thrown. Uses root if available. chmod (Filename As String, permissions As String) As Boolean Sets file permissions for a file or directory. Requires correct user access or root. Permissions are as Linux chmod numeric value. 1 = execute 2 = write 4 = read 644 = owner read/write (4 + 2), group read, other read 755 = owner read/write/execute (4 + 2 + 1), group read/execute, other read,execute Uses Root if available. cp (Src As String, Dest As String) As Boolean Copy a file from Src to Dest Returns True on success. Uses Root if available. cpr (Src As String, Dest As String) As Boolean Recursive copy just like the Linux cp -r Copies all files and directories under the Src path to Dest. Works with directories, but is meaningless for files. Returns True on success. Uses Root if available. createZipFile (path As String) Creates a backup zip of the directory path dirEntries (Dir As String, Hidden As Boolean) As ArrayList Returns a list of formatted directory entries or an empty list on failure. As in : d---rwxr-x system sdcard_rw 0 2011-11-13 12:59 LOST.DIR Each element is in the form of a space separated string of permissions and type (drwxr-xr-x) where the first char indicates a directory, link, or regular file (d, l, or -). owner name group name file size date time file name Hidden is a boolean and will show ALL files hidden or not if True. Note that this method makes every attempt to fill in a size for symlinks and directories This means that you should always get 7 fields. Uses Root if available. extractZipFiles (zip_file As String, directory As String) Unzips a backup zipfile to directory. Creates the destination DIR if needed. extractZipFilesFromDir (zipName As String, fromDir As String, toDir As String) Unzips zipName from fromDir to toDir isDir (Path As String) As Boolean Returns true if Path is a directory isSymlink (Fname As String) As Boolean Returns True if file or directory is a symbolic link. mkdir (Dir As String) As Boolean Make a directory and any needed parent directories Returns True on success Uses Root if available. mv (Oldname As String, Newname As String) As Boolean Use to move or rename files or directories from Oldname to Newname. Returns True on success. Uses Root if available. rm (Fname As String) As Boolean Remove (delete) a file or directory Directories must be empty Returns True on success. Uses Root if available. rmrf (Fname As String) As Boolean Remove (delete) a directory recursively. ALL files and sub-directories will be deleted, EMPTY OR NOT. Returns True on success. Uses Root if available. zipPeek (zipname As String) As ArrayList Opens a zip file and returns the list of its contents in a list. zipname is the full path and filename to be displayed Returns a formatted string of : path/Name, compressed FileSize, and DateTime as a single semicolon separated string Permissions: android.permission.WRITE_EXTERNAL_STORAGE The MLsmb library: MLsmb Author: Jem Miller - Missing Link Software Version: 1.51 MLsmb Events: Success (Name as String As , Size as Long As ) Fields: FSerror As String Methods: Escape (fname As String) As String Escapes spaces, "(" and ")" characters in a filename Returns the original string if already escaped. Initialize Initializes internal variables SmbCopy (FromFile As String, ToFile As String, eventname As String) Copies a file TO or FROM the Samba server, including samba to samba copying. Calls the Success event when completed. The event contains the filename and file size as: varname_Success(Name as String, Size as Long) put any code you need to execute on successful copy in the event sub. eventname_Success(Name As String, Size As Long) SmbCredentials (Username As String, Password As String, Domain As String) Set the user name, password, and domain for a samba server. If set, this record will be passed to the server when the Smb methods are called. SmbDelete (Url As String, SmbFile As String) As Boolean Deletes a file on the Samba server Returns True on success. SmbIP (host As String) As String Returns the IP address of the Samba server SmbList (SmbUrl As String, Pattern As String) As ArrayList Returns a list of SmbFile types on the samba server. Check the FSerror string to see if authentication failed or is needed. SmbUrl = the SMB path to list Pattern = an optional wildcard search pattern SmbMove (From As String, To As String) As Boolean Moves or renames files or directories on the Samba server Returns True on success. mkSmbDirs (Dir As String) As Boolean Makes a directory on the Samba server. This method will create any missing elements of the new path. Returns True on success. smbInStream (Afile As String) As InputStream Creates an input stream from the file Afile that can be fed to another object. Returns null if not successful. Permissions: android.permission.INTERNET android.permission.WRITE_EXTERNAL_STORAGE SambaFile Fields: TYPE_COMM As Int TYPE_FILESYSTEM As Int TYPE_NAMED_PIPE As Int TYPE_PRINTER As Int TYPE_SERVER As Int TYPE_SHARE As Int TYPE_WORKGROUP As Int Methods: CanRead As Boolean True is the file or directory is readable. CanWrite As Boolean True if the directory or file can be written to. DiskFree As Long Returns the free space of this Samba share. GetPath As String Returns the SMB path to this file or directory GetServer As String Returns the Smaba server name GetShare As String Returns the share name GetType As Int Returns an Int representing the type of SMB object for this SambaFile from 0 through 6 TYPE_FILESYSTEM, a regular file or directory TYPE_WORKGROUP, A workgroup TYPE_SERVER, a Samba server TYPE_SHARE, a shared directory TYPE_PRINTER, a shared printer TYPE_NAMED_PIPE, a named pipe TYPE_COMM, a communications device IsFile As Boolean True if this is a file and not a directory. IsHidden As Boolean True if this file or directory is hidden. IsInitialized As Boolean LastModified As Long Returns the modify date of this file Name As String Returns the file name Parent As String Returns the parent directory ServerIp (Server As String) As String Returns the IP address of the server Size As Long Returns the file size isDir As Boolean Ckecks if this file is a directory. The jcifs.jar file used in this library is available HERE There are 2 test projects included in the zip file. One for MLfiles and one for MLsmb. Version 1.1 Many small changes have been made for efficiency. The GetRoot has been modified to try different methods of determining if a device has root access available. I added the Escape method in both the files and Samba objects to escape file names containing spaces, "(" and ")" characters. It returns the original string with no changes if nothing needs to be done, otherwise it escapes those characters with the "\" character so that linux and cifs can use the string. Version 1.2 Added 2 new methods and changed 1. Added GetGigsFree(String Path) This returns the freespace of a partition in gigabytes as a double Added GetFreespace(String Path) This returns the freespace of a partition in bytes as a Long Changed GetDiskFree(String Path) to GetDiskstats(String Path) It still returns a formatted STRING of values. Updated the libtest.b4a project. Version 1.3 Removed unused parameter from GetFreespace to avoid any confusion. Version 1.4 Changed OS calls to look for busybox by default. Samsung and others do not offer common OS calls in their ROMs, but (at least in Samsungs case) they include busybox on the device, which solves this problem. Version 1.41 Changed the cp and cpr methods. If the cp command is not present on the OS version, both use native methods to copy the file or do a recursive copy of the directory tree. These methods do not honor root access, so normal permissions are used. Version 1.42 Minor change to the GetGigsFree and GetFreespace methods to try to ensure they return accurate results. Version 1.43 Actually made version 1.42 changes work. About time! Version 1.44 Added the Exists method to test if a file or directory exists. Version 1.45 Fixes some zip extraction weirdness. NOTE: The order of fromDir and toDir have been changed! Also the destination directory will now be created if needed in both ExtractFilesFromDir() and ExtractFiles. Version 1.47 Added GetExtSd method to find a mounted external (add-on_ sd card. Lots or rewrites and optimizations. The Samba routines are mostly rewritten and are now very reliable. Better authentication in all samba methods as well. More error correction and detection. Version 1.50 Separated the local files and smb files into 2 libraries. MLsmb Version 1.51 Corrected headers that got changed during the library separation process. Attached MLsmb-1.51.zip to correct this issue. .
H HavasuPreditor Member Licensed User Longtime User Mar 6, 2014 #81 HotShoe said: Yes it is, and yes you'll need root to mount the drive. --- Jem Click to expand... Hello Jem, Would you happen to have an example of code to Mount a drive. I Think a have a pretty good handle on CIFS. But I not sure how to place it in code with your library. thanks for any help, Carter
HotShoe said: Yes it is, and yes you'll need root to mount the drive. --- Jem Click to expand... Hello Jem, Would you happen to have an example of code to Mount a drive. I Think a have a pretty good handle on CIFS. But I not sure how to place it in code with your library. thanks for any help, Carter
HotShoe Well-Known Member Licensed User Longtime User Mar 6, 2014 #82 Very much like mounting an NFS system. mount -t cifs //192.168.1.35/Sharename /mnt/share -o username=USERNAME,password=PASSWD This would mount the share "Sharename" on this smb server at /mnt/share on your device, and supply the username and password. You can use the rootcmd in mlfiles to do this. --- Jem
Very much like mounting an NFS system. mount -t cifs //192.168.1.35/Sharename /mnt/share -o username=USERNAME,password=PASSWD This would mount the share "Sharename" on this smb server at /mnt/share on your device, and supply the username and password. You can use the rootcmd in mlfiles to do this. --- Jem
H HavasuPreditor Member Licensed User Longtime User Mar 7, 2014 #83 Hey Jem, Thank you for the help. I think I got what you are saying, but I'm not sure about the arguments Args, StdOut and StdErr. this is what I have so far: Code: Dim MountCmd As MLfiles MountCmd.RootCmd("mount -t cifs //192.168.100.51/o$ /mnt/drive -o domain=Domain,username=User,password=Pass",?,?,?,False) thanks again, Carter
Hey Jem, Thank you for the help. I think I got what you are saying, but I'm not sure about the arguments Args, StdOut and StdErr. this is what I have so far: Code: Dim MountCmd As MLfiles MountCmd.RootCmd("mount -t cifs //192.168.100.51/o$ /mnt/drive -o domain=Domain,username=User,password=Pass",?,?,?,False) thanks again, Carter
HotShoe Well-Known Member Licensed User Longtime User Mar 7, 2014 #84 HavasuPreditor said: Hey Jem, Thank you for the help. I think I got what you are saying, but I'm not sure about the arguments Args, StdOut and StdErr. this is what I have so far: Code: Dim MountCmd As MLfiles MountCmd.RootCmd("mount -t cifs //192.168.100.51/o$ /mnt/drive -o domain=Domain,username=User,password=Pass",?,?,?,False) thanks again, Carter Click to expand... Just add a couple stringbuilders something like: Code: dim sb1, sb2 as stringbuilder MountCmd.RootCmd("mount -t cifs //192.168.100.51/Users/carter /mnt/drive -o domain=Domain,username=User,password=Pass","",sb1,sb2,False) the sb's will return any reply or error from the command. the args is not required since you are sending everything in the command string (which should work just fine). otherwise it would be the options for the mount command (everything after "mount"). --- Jem
HavasuPreditor said: Hey Jem, Thank you for the help. I think I got what you are saying, but I'm not sure about the arguments Args, StdOut and StdErr. this is what I have so far: Code: Dim MountCmd As MLfiles MountCmd.RootCmd("mount -t cifs //192.168.100.51/o$ /mnt/drive -o domain=Domain,username=User,password=Pass",?,?,?,False) thanks again, Carter Click to expand... Just add a couple stringbuilders something like: Code: dim sb1, sb2 as stringbuilder MountCmd.RootCmd("mount -t cifs //192.168.100.51/Users/carter /mnt/drive -o domain=Domain,username=User,password=Pass","",sb1,sb2,False) the sb's will return any reply or error from the command. the args is not required since you are sending everything in the command string (which should work just fine). otherwise it would be the options for the mount command (everything after "mount"). --- Jem
H HavasuPreditor Member Licensed User Longtime User Mar 7, 2014 #85 Ah, now I get it! I was thinking I needed to send something, funny how you can get stuck in a mind set. I will give it a try. thanks again for all the help, Carter
Ah, now I get it! I was thinking I needed to send something, funny how you can get stuck in a mind set. I will give it a try. thanks again for all the help, Carter
HotShoe Well-Known Member Licensed User Longtime User May 3, 2014 #86 Version 1.50 is attached to the first post. It separates the files and SMB methods into 2 libraries. --- Jem
Version 1.50 is attached to the first post. It separates the files and SMB methods into 2 libraries. --- Jem
HotShoe Well-Known Member Licensed User Longtime User Jul 22, 2014 #87 This is just a bump to remind people that this library exists. --- Jem
F fanfalveto Active Member Licensed User Longtime User Aug 2, 2014 #88 i´m trying to test the smbtst example,i add the library but says if i´m missing the library. You know what happends? thank you
i´m trying to test the smbtst example,i add the library but says if i´m missing the library. You know what happends? thank you
HotShoe Well-Known Member Licensed User Longtime User Aug 2, 2014 #89 You need to download the jcifs library from the link at the end of the first post and put it in your additional libraries directory. --- Jem
You need to download the jcifs library from the link at the end of the first post and put it in your additional libraries directory. --- Jem
F fanfalveto Active Member Licensed User Longtime User Aug 2, 2014 #90 i do ,but nothing,the error is i missing the library
F fanfalveto Active Member Licensed User Longtime User Aug 2, 2014 #92 Code: Parsing code. Error Error parsing program. Error description: Unknown type: mlsmb Are you missing a library reference? Occurred on line: 16 Dim sf As MLsmb is for not insert the library,i know bur the library is in
Code: Parsing code. Error Error parsing program. Error description: Unknown type: mlsmb Are you missing a library reference? Occurred on line: 16 Dim sf As MLsmb is for not insert the library,i know bur the library is in
HotShoe Well-Known Member Licensed User Longtime User Aug 3, 2014 #93 make sure that mlsmb is checked in the libraries tab and that mlsmb.jar and jcifs.jar is in your additional libraries directory. That's all it takes for b4a to find them. --- Jem
make sure that mlsmb is checked in the libraries tab and that mlsmb.jar and jcifs.jar is in your additional libraries directory. That's all it takes for b4a to find them. --- Jem
F fanfalveto Active Member Licensed User Longtime User Aug 3, 2014 #94 I don´t know why but the error is the same. thank you anyway
dibesw Active Member Licensed User Longtime User Aug 22, 2014 #95 HotShoe said: make sure that mlsmb is checked in the libraries tab and that mlsmb.jar and jcifs.jar is in your additional libraries directory. That's all it takes for b4a to find them. --- Jem Click to expand... HI Hotshoe, I have the same problem. MLsmb tab is checked (v 1.50) but cannot see jcifs tab. In the zip file of jcifs.zip there is only jcifs.jar but there isn't jcifs.xml
HotShoe said: make sure that mlsmb is checked in the libraries tab and that mlsmb.jar and jcifs.jar is in your additional libraries directory. That's all it takes for b4a to find them. --- Jem Click to expand... HI Hotshoe, I have the same problem. MLsmb tab is checked (v 1.50) but cannot see jcifs tab. In the zip file of jcifs.zip there is only jcifs.jar but there isn't jcifs.xml
HotShoe Well-Known Member Licensed User Longtime User Aug 22, 2014 #96 jcifs is required by the MLsmb library, It will not show up in the IDE. It should be copied to your Additional Libraries directory along with the MLsmb.jar and MLsmb.xml files. --- Jem
jcifs is required by the MLsmb library, It will not show up in the IDE. It should be copied to your Additional Libraries directory along with the MLsmb.jar and MLsmb.xml files. --- Jem
AndrewKing Member Licensed User Longtime User Sep 4, 2014 #97 same error from me. jcifs.jar and MLsmb.jar are in the same lib directory.
HotShoe Well-Known Member Licensed User Longtime User Sep 5, 2014 #98 I use it in several apps and can't reproduce this. The MLsmb library must be checked in the libraries tab, and MLsmb.jar, MLsmb.xml, and jcifs.jar must be in your additional libraries directory. --- Jem
I use it in several apps and can't reproduce this. The MLsmb library must be checked in the libraries tab, and MLsmb.jar, MLsmb.xml, and jcifs.jar must be in your additional libraries directory. --- Jem
E ericvanderhoeven Member Licensed User Longtime User Sep 24, 2014 #99 Hi, can I use this lib to copy an edited version of the build.prop to /system/? I am having a bit of trouble doing this via code. The device is rooted as e.g. romtoolboxlite can be used to edit /system/build.prop manually and that saves just fine.. But if I use code like busybox cp /mnt/sdcard/whatever.txt /system/build.prop I get ''read only file system'' returned :-( Thanks, Eric
Hi, can I use this lib to copy an edited version of the build.prop to /system/? I am having a bit of trouble doing this via code. The device is rooted as e.g. romtoolboxlite can be used to edit /system/build.prop manually and that saves just fine.. But if I use code like busybox cp /mnt/sdcard/whatever.txt /system/build.prop I get ''read only file system'' returned :-( Thanks, Eric
sanjibnanda Active Member Licensed User Longtime User Sep 24, 2014 #100 HotShoe said: I use it in several apps and can't reproduce this. The MLsmb library must be checked in the libraries tab, and MLsmb.jar, MLsmb.xml, and jcifs.jar must be in your additional libraries directory. --- Jem Click to expand... hello , same error here, i tried all sort of combinations , but the lib reference to MLsmb does not show up (though it is there in IDE Tab) could you see into this? regards
HotShoe said: I use it in several apps and can't reproduce this. The MLsmb library must be checked in the libraries tab, and MLsmb.jar, MLsmb.xml, and jcifs.jar must be in your additional libraries directory. --- Jem Click to expand... hello , same error here, i tried all sort of combinations , but the lib reference to MLsmb does not show up (though it is there in IDE Tab) could you see into this? regards