Upgrade to Pro — share decks privately, control downloads, hide ads and more …

关于PhoneGap你应该知道的12件事 (12 things you should know...

Avatar for dong dong
March 02, 2012

关于PhoneGap你应该知道的12件事 (12 things you should know about PhoneGap)

在w3ctech上的演讲稿,介绍了PhoneGap的基本概念,用法,打包,插件的开发,以Android为例介绍了PhoneGap的内部机制,以及如何调试PhoneGap应用。

Avatar for dong

dong

March 02, 2012
Tweet

More Decks by dong

Other Decks in Technology

Transcript

  1. /BUJWF8FC7JFX 1IPOF(BQ1MVHJOT .PCJMF04  /BUJWF"1* )BSEXBSF  Ԯۋఖ ๭ྙԩ৘ ຩ઎

    l  8FC"QQ    +BWB4DSJQU  $44  )5.-  FFI 浏览器 OS API OS API 1IPOF(BQ"QQ
  2. 1IPOF(BQࡏܒ  .PCJMF04 8FC"QQ )5.- +BWB4DSJQU $44 /BUJWF8FC7JFX 8FC7JFXa6*8FC7JFXl 

    1IPOF(BQ1MVHJOT ജཞ๨ ᄎ׮Ԯۋఖ ᆷଲᆌ ഡСྐ༏ (14 ๙ᆩ ຩ઎ሑ෿ l קᇅQMVHJO HTML5 API PhoneGap JS API OS API OS API PhoneGap Native API
  3. public class CirclesActivity extends DroidGap { @Override public void onCreate(Bundle

    savedInstanceState) { super.onCreate(savedInstanceState); super.loadUrl("file:///android_asset/ www/circles.html"); } } /BUJWF8SBQQFSXJUI1IPOF(BQ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
  4. public class callsPGPlugin extends Plugin { // List Actions public

    static nal String ACTION="list"; @Override public PluginResult execute(String action, JSONArray data, String callbackId) { PluginResult result=null; if(ACTION.equals(action)){ CallLogAI callLogAI = new CallLogAI(ctx); JSONObject callsHistory=callLogAI.fetchCallLogs(null); Log.d("RESULT=", callsHistory.toString()); result=new PluginResult(Status.OK,callsHistory); }else{ result=new PluginResult(Status.INVALID_ACTION); Log.d("CallsPlugin","Invalidate action:" + action); } return result; } } Javaקᇅplugin Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
  5. ᇿҨplugin <?xml version="1.0" encoding="UTF-8"?> <plugins> <plugin name="App" value="com.phonegap.App"/> <plugin name="Geolocation"

    value="com.phonegap.GeoBroker"/> <plugin name="Device" value="com.phonegap.Device"/> …… <plugin name="Temperature" value="com.phonegap.TempListener"/> <plugin name="FileTransfer" value="com.phonegap.FileTransfer"/> <plugin name="Capture" value="com.phonegap.Capture"/> <plugin name="CallsHistoryPlugin" value="com.mark.phonegap.plugin.callsPGPlugin" /> </plugins> Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
  6. window.plugins.callsListing.list( function(r){printResult(r)}, function(e){console.log(e)} ); CallsListing.prototype.list=function(success Callback,failureCallback){ return PhoneGap.exec(successCallback, failureCallback, 'CallsHistoryPlugin',

    'list',['test’]); }; public class callsPGPlugin extends Plugin { // List Actions public static nal String ACTION="list"; @Override public PluginResult execute(String action, JSONArray data, String callbackId) { <plugin name="CallsHistoryPlugin" value="com.mark.phonegap.plugin.callsPGPlu gin" />
  7. CallsListing.prototype.list=function(successCallback,fai lureCallback){ return PhoneGap.exec(successCallback, failureCallback, 'CallsHistoryPlugin', 'list',['test’]); }; PhoneGap.exec =

    function(success, fail, service, action, args) { … var r = prompt(JSON.stringify(args), "gap:"+JSON.stringify([service, action, callbackId, true])); … +BWBTDSJQU Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
  8. Droidgap.java public boolean onJsPrompt(WebView view, String url, String message, String

    defaultValue, JsPromptResult result) { …… String r = pluginManager.exec(service, action, callbackId, message, async); …… } Pluginmanager.java public String exec( nal String service, nal String action, nal String callbackId, nal String jsonArgs, nal boolean async) { …… cr = plugin.execute(action, args, callbackId); ctx.sendJavascript(cr.toErrorCallbackString(callbackId)); …… } +BWB