|
AndSMB provides Intents for third party applications. Intents available are:
- Browse SMB server.
- Pick file, folder, printer or named pipe on SMB server.
- Upload files/folders from SDCard to a SMB server.
- Download files/folders from a SMB server to SDCard.
- Upload images/videos from gallery to a SMB server already setup in AndSMB.
Browse SMB server:
You have to define a SMB server URL:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("smb://192.168.20.128:445"));
You can add SMB credentials:
intent.putExtra("smb_username", "guest");
//intent.putExtra("smb_password", "yourpassword");
//intent.putExtra("smb_domain", "YOURDOMAIN");
If credentials are not provided but required then AndSMB will prompt for login and password.
Setup optional share and/or remote folder:
//intent.putExtra("remote_folder", "/yourshare/folder");
Setup optional SMB preferences:
//intent.putExtra("smb_encoding", "UTF-8");
Finally start the Activity:
startActivityForResult(intent, BROWSE_REQUEST);
Nothing returned in onActivityResult method.
|
|
Pick file, folder or printer on SMB server:
You have to define a SMB server URL with PICK action:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setData(Uri.parse("smb://192.168.20.128:445"));
You can add SMB credentials:
intent.putExtra("smb_username", "guest");
//intent.putExtra("smb_password", "yourpassword");
//intent.putExtra("smb_domain", "YOURDOMAIN");
If credentials are not provided but required then AndSMB will prompt for login and password.
Setup optional share and/or remote folder:
//intent.putExtra("remote_folder", "/yourshare/folder");
Setup optional display preferences:
//intent.putExtra("explorer_title", "Select a file");
//intent.putExtra("browser_list_background_color", "99000000");
Finally start the Activity:
startActivityForResult(intent, PICK_REQUEST);
Selected path will be returned in onActivityResult method:
Uri uri = intent.getData();
|
|
Upload files from SDCard to SMB server:
You have to define a SMB server URL and upload command:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
Uri smbUri = Uri.parse("smb://192.168.20.128");
intent.setDataAndType(smbUri, "vnd.android.cursor.dir/lysesoft.andsmb.uri");
intent.putExtra("command_type", "upload");
You can add SMB credentials:
intent.putExtra("smb_username", "guest");
//intent.putExtra("smb_password", "yourpassword");
//intent.putExtra("smb_domain", "YOURDOMAIN");
Setup optional SMB preferences:
//intent.putExtra("smb_encoding", "UTF-8");
And define file(s) to upload and optional remote folder:
intent.putExtra("local_file1", "/sdcard/subfolder1/file1.zip");
intent.putExtra("local_file2", "/sdcard/subfolder2/file2.zip");
// Optional initial remote folder (it must exist before upload)
intent.putExtra("remote_folder", "/remotefolder/subfolder");
Finally start the Activity:
startActivityForResult(intent, UPLOAD_FILES_REQUEST);
Transfer info will be returned in onActivityResult method:
String status = intent.getStringExtra("TRANSFERSTATUS");
String files = intent.getStringExtra("TRANSFERAMOUNT");
String size = intent.getStringExtra("TRANSFERSIZE");
String time = intent.getStringExtra("TRANSFERTIME");
|
|
Upload folder from SDCard to SMB server:
You have to define a SMB server URL and upload command:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
Uri smbUri = Uri.parse("smb://192.168.20.128");
intent.setDataAndType(smbUri, "vnd.android.cursor.dir/lysesoft.andsmb.uri");
intent.putExtra("command_type", "upload");
You can add SMB credentials:
intent.putExtra("smb_username", "guest");
//intent.putExtra("smb_password", "yourpassword");
//intent.putExtra("smb_domain", "YOURDOMAIN");
Setup optional SMB preferences:
//intent.putExtra("smb_encoding", "UTF-8");
And define folder(s) to upload and optional remote folder:
intent.putExtra("progress_title", "Uploading folder ...");
intent.putExtra("local_file1", "/sdcard/localfolder");
// Optional Initial remote folder (it must exist before upload)
intent.putExtra("remote_folder", "/remotefolder/uploadedfolder");;
Finally start the Activity:
startActivityForResult(intent, UPLOAD_FOLDER_REQUEST);
Transfer info will be returned in onActivityResult method:
String status = intent.getStringExtra("TRANSFERSTATUS");
String files = intent.getStringExtra("TRANSFERAMOUNT");
String size = intent.getStringExtra("TRANSFERSIZE");
String time = intent.getStringExtra("TRANSFERTIME");
|
|
Download files from SMB server to SDCard:
You have to define a SMB server URL and download command:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
Uri smbUri = Uri.parse("smb://192.168.20.128");
intent.setDataAndType(smbUri, "vnd.android.cursor.dir/lysesoft.andsmb.uri");
intent.putExtra("command_type", "download");
You can add SMB credentials:
intent.putExtra("smb_username", "guest");
//intent.putExtra("smb_password", "yourpassword");
//intent.putExtra("smb_domain", "YOURDOMAIN");
Setup optional SMB preferences:
//intent.putExtra("smb_encoding", "UTF-8");
And define file(s) to download into a local folder:
intent.putExtra("remote_file1", "/remotefolder/subfolder/file1.zip");
intent.putExtra("remote_file2", "/remotefolder/subfolder/file2.zip");
// Target local folder where files will be downloaded.
intent.putExtra("local_folder", "/sdcard/localfolder");
Finally start the Activity to be closed after transfer:
intent.putExtra("close_ui", "true");
startActivityForResult(intent, DOWNLOAD_FILES_REQUEST);
Transfer status will be returned in onActivityResult method:
String status = intent.getStringExtra("TRANSFERSTATUS");
String files = intent.getStringExtra("TRANSFERAMOUNT");
String size = intent.getStringExtra("TRANSFERSIZE");
String time = intent.getStringExtra("TRANSFERTIME"); |
|
Download folder from SMB server to SDCard:
You have to define a SMB server URL and download command:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
Uri smbUri = Uri.parse("smb://192.168.20.128");
intent.setDataAndType(smbUri, "vnd.android.cursor.dir/lysesoft.andsmb.uri");
intent.putExtra("command_type", "download");
You can add SMB credentials:
intent.putExtra("smb_username", "guest");
//intent.putExtra("smb_password", "yourpassword");
//intent.putExtra("smb_domain", "YOURDOMAIN");
Setup optional SMB preferences:
//intent.putExtra("smb_encoding", "UTF-8");
And define folder(s) to download into a local folder:
intent.putExtra("progress_title", "Downloading folder ...");
// Remote folder to download (must not end with /).
intent.putExtra("remote_file1", "/remotefolder/uploadedfolder");
intent.putExtra("local_folder", "/sdcard/downloadedfolder");
Finally start the Activity to transfer:
startActivityForResult(intent, DOWNLOAD_FOLDER_REQUEST);
Transfer status will be returned in onActivityResult method:
String status = intent.getStringExtra("TRANSFERSTATUS");
String files = intent.getStringExtra("TRANSFERAMOUNT");
String size = intent.getStringExtra("TRANSFERSIZE");
String time = intent.getStringExtra("TRANSFERTIME"); |
|
Share from gallery:
You have to create a SEND Intent with image or video type:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("image/jpeg");
Then pass URI of item to share:
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://media/external/images/media/103"));
Finally start the Activity to transfer:
startActivityForResult(intent, SEND_REQUEST);
Transfer status will be returned in onActivityResult method:
String status = intent.getStringExtra("TRANSFERSTATUS");
String files = intent.getStringExtra("TRANSFERAMOUNT");
String size = intent.getStringExtra("TRANSFERSIZE");
String time = intent.getStringExtra("TRANSFERTIME"); |
|
The following table provides all properties available for AndSMB Intents:
Property |
Description |
Required |
Intent action |
To upload or download use: Intent.ACTION_PICK
To browse remote folder use: Intent.ACTION_VIEW
To share from gallery: Intent.ACTION_SEND |
Yes |
Intent data |
SMB server URI. It must start with smb:// followed by hostname (or IP address) and port (optional). For instance: smb://yourserver.com:445
You can setup a share or a initial folder through remote_folder parameter defined below.
This parameter also allows selecting an existing AndSMB configuration through:
- alias://myandsmbalias
Finally, to share from gallery, it must not be set and gallery item URI must be available in extra bundle as Intent.EXTRA_STREAM property.
|
Yes |
Intent type |
This parameter is required for Intent.ACTION_PICK, use: "vnd.android.cursor.dir/lysesoft.andsmb.uri". It is not needed Intent.ACTION_VIEW. For Intent.ACTION_SEND ot must starts with "image/*" or "video/*" or "audio/*". |
No |
progress_title |
Title text displayed in progress windows when uploading or downloading. |
No |
smb_username |
SMB username to login. |
No |
smb_password |
SMB password to login.
|
No |
smb_domain |
SMB domain to login. |
No |
smb_encoding |
This parameter allows selecting charset for SMB server. For instance:
- UTF-8
- SHIFT-JIS
- CP1251
- EUC-KR
- BIG5
- GBK |
No |
command_type |
This parameter allows selecting transfer type for Intent.ACTION_PICK. Value could be:
- upload
- download |
No |
remote_fileX |
Set of parameters (X=1 to N) to define remote files/folders. For instance:
remote_file1 = /remotefolder/subfolder1/file1.zip
remote_file2 = /remotefolder/subfolder2/file2.zip
remote_file3 = /remotefolder/subfolder3
...
It can used for upload and download
|
No |
local_fileX |
Set of parameters (X=1 to N) to define local files/folders. For instance:
local_file1 = /sdcard/subfolder1/file1.zip
local_file2 = /sdcard/subfolder2/file2.zip
local_file3 = /sdcard/subfolder3
...
It can be used for upload and download. |
No |
local_folder |
This parameter allows defining a local folder. It can used to select a target folder for download. For instance:
local_folder = /sdcard/localfolder |
No |
remote_folder |
This parameter allows defining a a share and/or a remote folder. It can used to select a target folder for upload. For instance:
remote_folder = /remotefolder/uploadedfolder |
No |
close_ui |
This parameter allows closing AndSMB progress window after transfer with Intent.ACTION_PICK. For instance:
close_ui = true
Notice that underlying SMB connection will be closed as soon as transfer activity is destroyed. |
No |
|
The following table provides all properties available for Intent returned by AndSMB:
Property |
Description |
Always
returned
|
TRANSFERSTATUS |
Report about status of transfer. It could be:
- COMPLETED
- FAILED
- CANCELLED
- UNKNOWN |
Yes |
TRANSFERAMOUNT |
Amount of files transferred. It is returned for completed transfers.
|
No |
TRANSFERSIZE |
Size in bytes of overall transfer. It is returned for completed transfers. |
No |
TRANSFERTIME |
Duration time of overall transfer. |
Yes |
Intent.getData() |
File, folder, printer or named pipe selected. |
No |
|
Note: If AndSMB is already running then calling an Intent will close all current SMB connections.
|
Download AndSMBClient source code |
V1.0 |
[zip] |
|
AndSMBClient is a sample application demonstrating how to use Intents from thrid party applications. Each button triggers an Intent.
You can download source code to learn how to use such Intents. |
|
|
|
|