mirror of
https://github.com/apache/cordova-android.git
synced 2025-01-19 23:42:53 +08:00
Might as well keep isBackbuttonOverriden on the plugin
This commit is contained in:
commit
5d211f2fa6
@ -33,6 +33,10 @@ function read(filename) {
|
|||||||
f.Close();
|
f.Close();
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
function setTarget() {
|
||||||
|
var targets = shell.Exec('android.bat list targets').StdOut.ReadAll().match(/id:\s\d+/g);
|
||||||
|
return targets[targets.length - 1].replace(/id: /, ""); // TODO: give users the option to set their target
|
||||||
|
}
|
||||||
function write(filename, contents) {
|
function write(filename, contents) {
|
||||||
var fso=WScript.CreateObject("Scripting.FileSystemObject");
|
var fso=WScript.CreateObject("Scripting.FileSystemObject");
|
||||||
var f=fso.OpenTextFile(filename, 2, true);
|
var f=fso.OpenTextFile(filename, 2, true);
|
||||||
@ -42,12 +46,11 @@ function write(filename, contents) {
|
|||||||
function replaceInFile(filename, regexp, replacement) {
|
function replaceInFile(filename, regexp, replacement) {
|
||||||
write(filename, read(filename).replace(regexp, replacement));
|
write(filename, read(filename).replace(regexp, replacement));
|
||||||
}
|
}
|
||||||
function exec(s, output) {
|
function exec(command) {
|
||||||
var o=shell.Exec(s);
|
var oShell=shell.Exec(command);
|
||||||
while (o.Status == 0) {
|
while (oShell.Status == 0) {
|
||||||
WScript.Sleep(100);
|
WScript.sleep(100);
|
||||||
}
|
}
|
||||||
//WScript.Echo("Command exited with code " + o.Status);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function cleanup() {
|
function cleanup() {
|
||||||
@ -125,9 +128,8 @@ if(fso.FolderExists(PROJECT_PATH)) {
|
|||||||
var PACKAGE_AS_PATH=PACKAGE.replace(/\./g, '\\');
|
var PACKAGE_AS_PATH=PACKAGE.replace(/\./g, '\\');
|
||||||
var ACTIVITY_PATH=PROJECT_PATH+'\\src\\'+PACKAGE_AS_PATH+'\\'+ACTIVITY+'.java';
|
var ACTIVITY_PATH=PROJECT_PATH+'\\src\\'+PACKAGE_AS_PATH+'\\'+ACTIVITY+'.java';
|
||||||
var MANIFEST_PATH=PROJECT_PATH+'\\AndroidManifest.xml';
|
var MANIFEST_PATH=PROJECT_PATH+'\\AndroidManifest.xml';
|
||||||
var TARGET=shell.Exec('android.bat list targets').StdOut.ReadAll().match(/id:\s([0-9]).*/)[1];
|
var TARGET=setTarget();
|
||||||
var VERSION=read(ROOT+'\\VERSION').replace(/\r\n/,'').replace(/\n/,'');
|
var VERSION=read(ROOT+'\\VERSION').replace(/\r\n/,'').replace(/\n/,'');
|
||||||
|
|
||||||
// create the project
|
// create the project
|
||||||
exec('android.bat create project --target '+TARGET+' --path '+PROJECT_PATH+' --package '+PACKAGE+' --activity '+ACTIVITY);
|
exec('android.bat create project --target '+TARGET+' --path '+PROJECT_PATH+' --package '+PACKAGE+' --activity '+ACTIVITY);
|
||||||
|
|
||||||
@ -140,18 +142,32 @@ downloadCommonsCodec();
|
|||||||
exec('ant.bat -f '+ ROOT +'\\framework\\build.xml jar');
|
exec('ant.bat -f '+ ROOT +'\\framework\\build.xml jar');
|
||||||
|
|
||||||
// copy in the project template
|
// copy in the project template
|
||||||
exec('cmd /c xcopy '+ ROOT + '\\bin\\templates\\project\\* '+PROJECT_PATH+' /S /Y');
|
exec('%comspec% /c xcopy '+ ROOT + '\\bin\\templates\\project\\res '+PROJECT_PATH+'\\res\\ /E /Y');
|
||||||
|
exec('%comspec% /c xcopy '+ ROOT + '\\bin\\templates\\project\\assets '+PROJECT_PATH+'\\assets\\ /E /Y');
|
||||||
|
exec('%comspec% /c copy '+ROOT+'\\bin\\templates\\project\\AndroidManifest.xml ' + PROJECT_PATH + '\\AndroidManifest.xml /Y');
|
||||||
|
exec('%comspec% /c copy '+ROOT+'\\bin\\templates\\project\\Activity.java '+ ACTIVITY_PATH +' /Y');
|
||||||
|
|
||||||
// copy in cordova.js
|
// copy in cordova.js
|
||||||
exec('cmd /c copy '+ROOT+'\\framework\\assets\\www\\cordova-'+VERSION+'.js '+PROJECT_PATH+'\\assets\\www\\cordova-'+VERSION+'.js /Y');
|
exec('%comspec% /c copy '+ROOT+'\\framework\\assets\\www\\cordova-'+VERSION+'.js '+PROJECT_PATH+'\\assets\\www\\cordova-'+VERSION+'.js /Y');
|
||||||
|
|
||||||
// copy in cordova.jar
|
// copy in cordova.jar
|
||||||
exec('cmd /c copy '+ROOT+'\\framework\\cordova-'+VERSION+'.jar '+PROJECT_PATH+'\\libs\\cordova-'+VERSION+'.jar /Y');
|
exec('%comspec% /c copy '+ROOT+'\\framework\\cordova-'+VERSION+'.jar '+PROJECT_PATH+'\\libs\\cordova-'+VERSION+'.jar /Y');
|
||||||
|
|
||||||
// copy in xml
|
// copy in xml
|
||||||
fso.CreateFolder(PROJECT_PATH + '\\res\\xml');
|
fso.CreateFolder(PROJECT_PATH + '\\res\\xml');
|
||||||
exec('cmd /c copy '+ROOT+'\\framework\\res\\xml\\cordova.xml ' + PROJECT_PATH + '\\res\\xml\\cordova.xml /Y');
|
exec('%comspec% /c copy '+ROOT+'\\framework\\res\\xml\\cordova.xml ' + PROJECT_PATH + '\\res\\xml\\cordova.xml /Y');
|
||||||
exec('cmd /c copy '+ROOT+'\\framework\\res\\xml\\plugins.xml ' + PROJECT_PATH + '\\res\\xml\\plugins.xml /Y');
|
exec('%comspec% /c copy '+ROOT+'\\framework\\res\\xml\\plugins.xml ' + PROJECT_PATH + '\\res\\xml\\plugins.xml /Y');
|
||||||
|
|
||||||
|
// copy cordova scripts
|
||||||
|
fso.CreateFolder(PROJECT_PATH + '\\cordova');
|
||||||
|
exec('%comspec% /c copy '+ROOT+'\\bin\\templates\\cordova\\appinfo.jar ' + PROJECT_PATH + '\\cordova\\appinfo.jar /Y');
|
||||||
|
exec('%comspec% /c copy '+ROOT+'\\bin\\templates\\cordova\\cordova.js ' + PROJECT_PATH + '\\cordova\\cordova.js /Y');
|
||||||
|
exec('%comspec% /c copy '+ROOT+'\\bin\\templates\\cordova\\cordova.bat ' + PROJECT_PATH + '\\cordova\\cordova.bat /Y');
|
||||||
|
exec('%comspec% /c copy '+ROOT+'\\bin\\templates\\cordova\\clean.bat ' + PROJECT_PATH + '\\cordova\\clean.bat /Y');
|
||||||
|
exec('%comspec% /c copy '+ROOT+'\\bin\\templates\\cordova\\debug.bat ' + PROJECT_PATH + '\\cordova\\debug.bat /Y');
|
||||||
|
exec('%comspec% /c copy '+ROOT+'\\bin\\templates\\cordova\\log.bat ' + PROJECT_PATH + '\\cordova\\log.bat /Y');
|
||||||
|
exec('%comspec% /c copy '+ROOT+'\\bin\\templates\\cordova\\emulate.bat ' + PROJECT_PATH + '\\cordova\\emulate.bat /Y');
|
||||||
|
exec('%comspec% /c copy '+ROOT+'\\bin\\templates\\cordova\\BOOM.bat ' + PROJECT_PATH + '\\cordova\\BOOM.bat /Y');
|
||||||
|
|
||||||
// interpolate the activity name and package
|
// interpolate the activity name and package
|
||||||
replaceInFile(ACTIVITY_PATH, /__ACTIVITY__/, ACTIVITY);
|
replaceInFile(ACTIVITY_PATH, /__ACTIVITY__/, ACTIVITY);
|
||||||
|
Binary file not shown.
@ -21,7 +21,7 @@ public class ApplicationInfo {
|
|||||||
|
|
||||||
// getting activity name
|
// getting activity name
|
||||||
String activity = ((Element)dom.getElementsByTagName("activity").item(0)).getAttribute("android:name");
|
String activity = ((Element)dom.getElementsByTagName("activity").item(0)).getAttribute("android:name");
|
||||||
System.out.println(String.format("%s/%s.%s", pakkage, pakkage, activity));
|
System.out.println(String.format("%s/.%s", pakkage, activity.replace(".", "")));
|
||||||
} catch(ParserConfigurationException pce) {
|
} catch(ParserConfigurationException pce) {
|
||||||
pce.printStackTrace();
|
pce.printStackTrace();
|
||||||
} catch(SAXException se) {
|
} catch(SAXException se) {
|
||||||
|
@ -1 +0,0 @@
|
|||||||
Main-Class: ApplicationInfo
|
|
1
bin/templates/cordova/BOOM.bat
Normal file
1
bin/templates/cordova/BOOM.bat
Normal file
@ -0,0 +1 @@
|
|||||||
|
%~dp0\cordova.bat BOOM
|
Binary file not shown.
1
bin/templates/cordova/clean.bat
Normal file
1
bin/templates/cordova/clean.bat
Normal file
@ -0,0 +1 @@
|
|||||||
|
%~dp0\cordova.bat clean
|
15
bin/templates/cordova/cordova.bat
Normal file
15
bin/templates/cordova/cordova.bat
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
@ECHO OFF
|
||||||
|
IF NOT DEFINED JAVA_HOME GOTO MISSING
|
||||||
|
FOR %%X in (java.exe ant.bat android.bat) do (
|
||||||
|
SET FOUND=%%~$PATH:X
|
||||||
|
IF NOT DEFINED FOUND GOTO MISSING
|
||||||
|
)
|
||||||
|
cscript %~dp0\cordova.js %*
|
||||||
|
GOTO END
|
||||||
|
:MISSING
|
||||||
|
ECHO Missing one of the following:
|
||||||
|
ECHO JDK: http://java.oracle.com
|
||||||
|
ECHO Android SDK: http://developer.android.com
|
||||||
|
ECHO Apache ant: http://ant.apache.org
|
||||||
|
EXIT /B 1
|
||||||
|
:END
|
108
bin/templates/cordova/cordova.js
vendored
Normal file
108
bin/templates/cordova/cordova.js
vendored
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
var ROOT = WScript.ScriptFullName.split('\\cordova\\cordova.js').join(''),
|
||||||
|
shell=WScript.CreateObject("WScript.Shell");
|
||||||
|
|
||||||
|
function exec(command) {
|
||||||
|
var oExec=shell.Exec(command);
|
||||||
|
var output = new String();
|
||||||
|
while(oExec.Status == 0) {
|
||||||
|
if(!oExec.StdOut.AtEndOfStream) {
|
||||||
|
var line = oExec.StdOut.ReadLine();
|
||||||
|
// XXX: Change to verbose mode
|
||||||
|
//WScript.StdOut.WriteLine(line);
|
||||||
|
output += line;
|
||||||
|
}
|
||||||
|
WScript.sleep(100);
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
function emulator_running() {
|
||||||
|
var local_devices = shell.Exec("%comspec% /c adb devices").StdOut.ReadAll();
|
||||||
|
if(local_devices.match(/emulator/)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
function emulate() {
|
||||||
|
// don't run emulator if a device is plugged in or if emulator is already running
|
||||||
|
if(emulator_running()) {
|
||||||
|
WScript.Echo("Device or Emulator already running!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var oExec = shell.Exec("%comspec% /c android.bat list avd");
|
||||||
|
var avd_list = [];
|
||||||
|
var avd_id = -10;
|
||||||
|
while(!oExec.StdOut.AtEndOfStream) {
|
||||||
|
var output = oExec.StdOut.ReadLine();
|
||||||
|
if(output.match(/Name: (.)*/)) {
|
||||||
|
avd_list.push(output.replace(/ *Name:\s/, ""));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// user has no AVDs
|
||||||
|
if(avd_list.length == 0) {
|
||||||
|
WScript.Echo("You don't have any Android Virtual Devices. Please create at least one AVD.");
|
||||||
|
WScript.Echo("android");
|
||||||
|
WScript.Quit(1);
|
||||||
|
}
|
||||||
|
// user has only one AVD so we launch that one
|
||||||
|
if(avd_list.length == 1) {
|
||||||
|
|
||||||
|
shell.Run("emulator -cpu-delay 0 -no-boot-anim -cache %Temp%\cache -avd "+avd_list[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// user has more than one avd so we ask them to choose
|
||||||
|
if(avd_list.length > 1) {
|
||||||
|
while(!avd_list[avd_id]) {
|
||||||
|
WScript.Echo("Choose from one of the following Android Virtual Devices [0 to "+(avd_list.length - 1)+"]:")
|
||||||
|
for(i = 0, j = avd_list.length ; i < j ; i++) {
|
||||||
|
WScript.Echo((i)+") "+avd_list[i]);
|
||||||
|
}
|
||||||
|
WScript.StdOut.Write("> ");
|
||||||
|
avd_id = new Number(WScript.StdIn.ReadLine());
|
||||||
|
}
|
||||||
|
|
||||||
|
shell.Run("emulator -cpu-delay 0 -no-boot-anim -cache %Temp%\\cache -avd "+avd_list[avd_id], 0, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function clean() {
|
||||||
|
exec("%comspec% /c ant.bat clean -f "+ROOT+"\\build.xml 2>&1");
|
||||||
|
}
|
||||||
|
|
||||||
|
function debug() {
|
||||||
|
exec("%comspec% /c ant.bat debug -f "+ROOT+"\\build.xml 2>&1");
|
||||||
|
}
|
||||||
|
|
||||||
|
function debug_install() {
|
||||||
|
exec("%comspec% /c ant.bat debug install -f "+ROOT+"\\build.xml 2>&1");
|
||||||
|
}
|
||||||
|
|
||||||
|
function log() {
|
||||||
|
WScript.Echo(exec("%comspec% /c adb.bat logcat"));
|
||||||
|
}
|
||||||
|
|
||||||
|
function launch() {
|
||||||
|
var launch_str=exec("%comspec% /c java -jar "+ROOT+"\\cordova\\appinfo.jar "+ROOT+"\\AndroidManifest.xml");
|
||||||
|
//WScript.Echo(launch_str);
|
||||||
|
exec("%comspec% /c adb shell am start -n "+launch_str+" 2>&1");
|
||||||
|
}
|
||||||
|
|
||||||
|
function BOOM() {
|
||||||
|
clean();
|
||||||
|
if(emulator_running()) {
|
||||||
|
debug_install();
|
||||||
|
launch();
|
||||||
|
} else {
|
||||||
|
debug();
|
||||||
|
WScript.Echo("##################################################################");
|
||||||
|
WScript.Echo("# Plug in your device or launch an emulator with cordova/emulate #");
|
||||||
|
WScript.Echo("##################################################################");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var args = WScript.Arguments;
|
||||||
|
if(args.count() != 1) {
|
||||||
|
WScript.StdErr.Write("An error has occured!\n");
|
||||||
|
WScript.Quit(1);
|
||||||
|
}
|
||||||
|
eval(args(0)+"()");
|
1
bin/templates/cordova/debug.bat
Normal file
1
bin/templates/cordova/debug.bat
Normal file
@ -0,0 +1 @@
|
|||||||
|
%~dp0\cordova.bat debug
|
1
bin/templates/cordova/emulate.bat
Normal file
1
bin/templates/cordova/emulate.bat
Normal file
@ -0,0 +1 @@
|
|||||||
|
%~dp0\cordova.bat emulate
|
0
bin/templates/cordova/log.bat
Normal file
0
bin/templates/cordova/log.bat
Normal file
@ -91,8 +91,43 @@ create_project.on('exit', function(code) {
|
|||||||
assert(exists, 'cordova.js did not get added');
|
assert(exists, 'cordova.js did not get added');
|
||||||
});
|
});
|
||||||
|
|
||||||
// check that project compiles && creates a cordovaExample-debug.apk
|
// make sure cordova master script was added
|
||||||
// XXX: !@##!@# WINDOWS
|
path.exists(util.format('%s/cordova/cordova.bat', project_path), function(exists) {
|
||||||
|
assert(exists, 'cordova script did not get added');
|
||||||
|
});
|
||||||
|
|
||||||
|
// make sure debug script was added
|
||||||
|
path.exists(util.format('%s/cordova/debug.bat', project_path), function(exists) {
|
||||||
|
assert(exists, 'debug script did not get added');
|
||||||
|
});
|
||||||
|
|
||||||
|
// make sure BOOM script was added
|
||||||
|
path.exists(util.format('%s/cordova/BOOM.bat', project_path), function(exists) {
|
||||||
|
assert(exists, 'BOOM script did not get added');
|
||||||
|
});
|
||||||
|
|
||||||
|
// make sure log script was added
|
||||||
|
path.exists(util.format('%s/cordova/log.bat', project_path), function(exists) {
|
||||||
|
assert(exists, 'log script did not get added');
|
||||||
|
});
|
||||||
|
|
||||||
|
// make sure clean script was added
|
||||||
|
path.exists(util.format('%s/cordova/clean.bat', project_path), function(exists) {
|
||||||
|
assert(exists, 'clean script did not get added');
|
||||||
|
});
|
||||||
|
|
||||||
|
// make sure emulate script was added
|
||||||
|
path.exists(util.format('%s/cordova/emulate.bat', project_path), function(exists) {
|
||||||
|
assert(exists, 'emulate script did not get added');
|
||||||
|
});
|
||||||
|
|
||||||
|
// make sure appinfo.jar script was added
|
||||||
|
path.exists(util.format('%s/cordova/appinfo.jar', project_path), function(exists) {
|
||||||
|
assert(exists, 'appinfo.jar script did not get added');
|
||||||
|
});
|
||||||
|
|
||||||
|
// check that project compiles && creates a cordovaExample-debug.apk
|
||||||
|
// XXX: !@##!@# WINDOWS
|
||||||
exec('ant debug -f ' + project_path + "\\build.xml", function(error, stdout, stderr) {
|
exec('ant debug -f ' + project_path + "\\build.xml", function(error, stdout, stderr) {
|
||||||
assert(error == null, "Cordova Android Project does not compile");
|
assert(error == null, "Cordova Android Project does not compile");
|
||||||
path.exists(util.format('%s/bin/%s-debug.apk', project_path, project_name),
|
path.exists(util.format('%s/bin/%s-debug.apk', project_path, project_name),
|
||||||
|
@ -73,10 +73,6 @@ public class App extends Plugin {
|
|||||||
else if (action.equals("overrideBackbutton")) {
|
else if (action.equals("overrideBackbutton")) {
|
||||||
this.overrideBackbutton(args.getBoolean(0));
|
this.overrideBackbutton(args.getBoolean(0));
|
||||||
}
|
}
|
||||||
else if (action.equals("isBackbuttonOverridden")) {
|
|
||||||
boolean b = this.isBackbuttonOverridden();
|
|
||||||
return new PluginResult(status, b);
|
|
||||||
}
|
|
||||||
else if (action.equals("exitApp")) {
|
else if (action.equals("exitApp")) {
|
||||||
this.exitApp();
|
this.exitApp();
|
||||||
}
|
}
|
||||||
@ -202,6 +198,7 @@ public class App extends Plugin {
|
|||||||
LOG.i("DroidGap", "WARNING: Volume Button Default Behaviour will be overridden. The volume event will be fired!");
|
LOG.i("DroidGap", "WARNING: Volume Button Default Behaviour will be overridden. The volume event will be fired!");
|
||||||
webView.bindButton(button, override);
|
webView.bindButton(button, override);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return whether the Android back button is overridden by the user.
|
* Return whether the Android back button is overridden by the user.
|
||||||
*
|
*
|
||||||
|
@ -138,7 +138,6 @@ public class DroidGap extends Activity implements CordovaInterface {
|
|||||||
protected CordovaWebViewClient webViewClient;
|
protected CordovaWebViewClient webViewClient;
|
||||||
|
|
||||||
protected LinearLayout root;
|
protected LinearLayout root;
|
||||||
public boolean bound = false;
|
|
||||||
protected boolean cancelLoadUrl = false;
|
protected boolean cancelLoadUrl = false;
|
||||||
protected ProgressDialog spinnerDialog = null;
|
protected ProgressDialog spinnerDialog = null;
|
||||||
|
|
||||||
@ -181,10 +180,6 @@ public class DroidGap extends Activity implements CordovaInterface {
|
|||||||
// when another application (activity) is started.
|
// when another application (activity) is started.
|
||||||
protected boolean keepRunning = true;
|
protected boolean keepRunning = true;
|
||||||
|
|
||||||
private boolean volumeupBound;
|
|
||||||
|
|
||||||
private boolean volumedownBound;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the authentication token.
|
* Sets the authentication token.
|
||||||
*
|
*
|
||||||
@ -948,24 +943,6 @@ public class DroidGap extends Activity implements CordovaInterface {
|
|||||||
return this.getContext();
|
return this.getContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Override the backbutton.
|
|
||||||
*
|
|
||||||
* @param override
|
|
||||||
*/
|
|
||||||
public void bindBackButton(boolean override) {
|
|
||||||
this.bound = override;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine of backbutton is overridden.
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public boolean isBackButtonBound() {
|
|
||||||
return this.bound;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load the specified URL in the Cordova webview or a new browser instance.
|
* Load the specified URL in the Cordova webview or a new browser instance.
|
||||||
*
|
*
|
||||||
@ -982,16 +959,6 @@ public class DroidGap extends Activity implements CordovaInterface {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void bindButton(String button, boolean override) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
if (button.compareTo("volumeup")==0) {
|
|
||||||
this.volumeupBound = override;
|
|
||||||
}
|
|
||||||
else if (button.compareTo("volumedown")==0) {
|
|
||||||
this.volumedownBound = override;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected Dialog splashDialog;
|
protected Dialog splashDialog;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user