1. Make handling of multi-page apps consistent with iOS and Blackberry to load into same webview (instead of starting a new activity).
2. Make lifecycle consistent. pause is called when going into background, resume is called when coming into foreground. It is no longer called when loading or leaving an HTML page. Use window.onload/onunload to get these notifications.
I could not get rid of the url encoding and decoding without hampering some users ability to pass non-ascii characters back to JavaScript. However, I was able to reduce the amount of data being passed from Java to JavaScript by 40% by decoding common characters that occur in JSON and XML. These characters will survive the round trip just fine and don't need to be encoded.
This is the best solution I could come up with. You won't be able to read files as large as you could in 0.9.4 but it will get close and it will support non-ascii characters.
I did my best to clean up the JavaScript so it would pass through jsHint more cleanly. There still are issues but there are a lot fewer now. This helped to make the JS code more consistent.
Adding a new object to navigator called 'connection'. Users can query the
connection object to find out what type of network, if any, the device is
connected to. The connection object will be updated each time there is a
connectivity change on the device.
Contact search was not working for unicode letters. The CallbackServer was changed so that it returned url encode strings. On the JavaScript side the PhoneGap callback handler decodes the returned string.
PhoneGap 0.9.4 replaced PluginManager.addService() with navigator.app.addService(). This is problematic with the older plugin as they are not being maintained. I'm adding in a PluginManger JavaScript class which will implement the addService method and call navigator.app.addService() method under the hood. This way we won't break old code.
http://www.w3.org/TR/file-system-api/
User can retrieve PERSISTENT and TEMPORARY file systems, list their
contents, and manipulate files and directories within them.
Modify existing FileWriter implementation
-----------------------------------------
- Change the way user creates a FileWriter. User must either pass a
File object to the FileWriter constructor, or use the
FileEntry.createWriter() method.
- Drop support for the 'filePath' and 'append' parameters in the
FileWriter constructor. The file path is determined from either the
File object passed to the FileWriter constructor, or the FileEntry
object used to create the FileWriter. To append to a file, use the
FileWriter object's seek method:
// writer is a FileWriter object
// seek to length of file to append
writer.seek(writer.length);
Replace FileMgr JavaScript APIs not specified in any File API spec
------------------------------------------------------------------
- Remove navigator.fileMgr.createDirectory(dirName) function. To
create a directory, use the DirectoryEntry.getDirectory() method,
which is part of the File API: Directories and System spec. Set
the Flags.create to 'true':
// directory is a DirectoryEntry object
directory.getDirectory(path, {create:true}, successCB, failCB);
- Remove navigator.fileMgr.getRootPaths() function. To retrieve the
root file systems, use the window.requestFileSystem() function,
which is part of the File API: Directories and System spec.
- Remove navigator.fileMgr.getFileProperties(fileName) function. To
get the properties of a file, use the FileEntry.file() method, which
is part of the File API: Directories and System spec.
- Remove navigator.fileMgr.deleteFile(fileName) function. To delete a
file, use the Entry.remove() method, which is part of the File API:
Directories and System spec.
- Remove navigator.fileMgr.deleteDirectory(dirName) function. To
delete a directory, use the Entry.remove() (if it is empty), or
DirectoryEntry.removeRecursively() methods, which are part of the
File API: Directories and System spec.
Clean up existing FileManager native code. Move some functionality to
file utility class.