A couple of other little touches others may like (or not). Creates .archive folder under DroidScript, ignores .edit and .archive folder and offers the Drive copy.
var mygmail = app.GetUser();
var txt, yesNo, archname;
//Called when application is started.
function OnStart()
{
//Create a layout with objects vertically centered.
var lay = app.CreateLayout( "linear", "FillXY" );
//Create a text label and add it to layout.
txt = app.CreateText( "..." );
lay.AddChild( txt );
//Add layout to app.
app.AddLayout( lay );
var fname = CreateArchive();
yesNo = app.CreateYesNoDialog( "Save to Drive?" );
yesNo.fname = fname;
yesNo.SetOnTouch( yesNoDrive_OnTouch );
}
//Create a backup archive.
function CreateArchive( )
{
var archfolder = "/sdcard/DroidScript/.archive/";
app.MakeFolder(archfolder);
//Create project zip file.
var zip = app.CreateZipUtil();
var fldr = "/sdcard/DroidScript";
archname = (new Date).toISOString().slice(0,19 );
archname = "ds"+archname.replace(/[-:]/g,"");
archname = archname.replace(/T/,"_");
archname += ".zip";
archname = app.GetModel()+"_"+archname;
var file = archfolder + archname;
zip.Create( file );
app.ShowProgress( "Archiving..." );
AddFolder( zip, "DroidScript", fldr );
app.HideProgress();
zip.Close();
return file;
}
//Recursively add folder contents to zip.
function AddFolder( zip, name, fldr )
{
txt.SetText(name);
var list = app.ListFolder( fldr,"",0,"alphasort" );
for( var i=0; i<list.length; i++ )
{
var title = list[i];
if( !app.IsFolder( fldr+"/"+title ) )
zip.AddFile( name+"/"+title, fldr+"/"+title );
else if (title != ".edit" && title != ".archive")
AddFolder( zip, name+"/"+title, fldr+"/"+title );
}
}
function yesNoDrive_OnTouch( result )
{
if( result=="Yes" )
{
var packageName = "com.google.android.apps.docs";
var className = "com.google.android.apps.docs.shareitem.UploadSharedItemActivity";
var action = "android.intent.action.SEND";
var category = "android.intent.category.DEFAULT"
var uri = null;
var type = "multipart/*";
var extras = [
{name:"android.intent.extra.STREAM", type:"file", value:yesNo.fname},
{name:"android.intent.extra.SUBJECT", type:"string", value:archname},
];
extras = JSON.stringify( extras );
app.SendIntent(packageName, className, action, category, uri, type, extras);
}
}