Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
关于PhoneGap你应该知道的12件事 (12 things you should know...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
dong
March 02, 2012
Technology
430
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
关于PhoneGap你应该知道的12件事 (12 things you should know about PhoneGap)
在w3ctech上的演讲稿,介绍了PhoneGap的基本概念,用法,打包,插件的开发,以Android为例介绍了PhoneGap的内部机制,以及如何调试PhoneGap应用。
dong
March 02, 2012
More Decks by dong
See All by dong
CSS Backgrounds and Borders规范导读
dong
0
1.8k
模块化HTML5移动应用开发:jQuery Mobile + BackboneJS+RequireJS
dong
8
5.7k
Other Decks in Technology
See All in Technology
スプシの手作業からの解脱 ~更新はClaude Codeに、見せ方と使い方はGASアプリに任せる~
kentarofujii
0
150
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
190
WasmをRustにする
sansantech
PRO
0
250
その Valkey 使いこなしていますか?
onk
PRO
5
1.5k
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
110
Gemini Intelligence 入門 ― AppFunctions と Gemini Nano
takuroabe
0
250
オントロジーって 結局なにもの? AI エージェントに「意味」を渡す知識設計の話
greenmidori
0
190
会社説明資料
persolserverworks
0
9.8k
Webの常識が通じないHTMLメールのダークモード
teamlab
PRO
0
120
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
6
4.9k
Tofu-Controller lightning talk @ Containerday 2026
gionn
0
110
パッチ更新でterraform initが落ちた日
grimoh
1
140
Featured
See All Featured
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
Practical Orchestrator
shlominoach
192
12k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
990
Scaling GitHub
holman
464
140k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
Speed Design
sergeychernyshev
33
2.2k
Agile that works and the tools we love
rasmusluckow
331
22k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
710
The Art of Programming - Codeland 2020
erikaheidi
57
14k
New Earth Scene 8
popppiees
4
2.7k
Marketing to machines
jonoalderson
1
5.9k
Transcript
ܱႿ1IPOF(BQ֥ࡱ൙ Mark Dong ٦ Adobe Developer Evangelist weibo.com/donglongfei weibo.com/javascriptdev
1IPOF(BQ൞હĤ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
٠໙၍ഡСЧֹหྟ յЇ)5.-"QQ ҆ඇ֞؟ᇕ QIPOF(BQQMVHJO Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
1IPOF(BQ҂൞હĤ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
+BWB4DSJQU 'SBNFXPSL *%&5PPMT Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
ఏჷ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
! Ⴟ୍ࣸࣁ֥ J1IPOF%FW$BNQ ! oCSJEHJOHUIFHBQ CFUXFFOUIFXFCBOEUIF JQIPOF4%,p ! 1IPOF(BQJUnTMJLF"*3 GPSUIF*QIPOF
/JUPCJCMPH Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
1IPOF(BQᄝ҂֥Чֹหྟ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
षჷĤ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
$BMM#BDL ۷ູ "QBDIF$PSEPWB Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
http://incubator.apache.org/cordova/
յЇ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
ᆌؓ҂֥*%& 4%, Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
PhoneGap Build Compile in the cloud Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
٠໙Чֹۿି
None
None
હ൞1IPOF(BQ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
None
+4 /BUJWF Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
/BUJWF8FC$POUSPM 1MVHJOT ''* JavaScript/CSS/HTML5 Not Web Tech Adobe 董龙飞 weibo.com/donglongfei
weibo.com/javascriptdev
/BUJWF8FC$POUSPM #SPXTFSğGVMMGVODUJPOT $ISPNFSFNPWFE /PUPQCBS
''* 'PSFJHO'VODUJPO*OUFSGBDF Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
/BUJWF8FC7JFX 1IPOF(BQ1MVHJOT .PCJMF04 /BUJWF"1* )BSEXBSF Ԯۋఖ ྙԩ ຩ
l 8FC"QQ +BWB4DSJQU $44 )5.- FFI 浏览器 OS API OS API 1IPOF(BQ"QQ
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
/BUJWF8FC$POUSPM ಆۿିᛍফఖ ીႵшॿ
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
QMVHJO
)5.-ཛଢ QIPOFHBQKBS QMVHJOTYNM "OESPJE.BOJGFTUYNM BOESPJEBDUJWJUZ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
In Java
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
ᇿҨ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
In JavaScript Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
+BWBTDSJQUࢤ१ var CallsListing=function(){}; CallsListing.prototype.list=function(successCallback,failureCallback){ return PhoneGap.exec(successCallback, failureCallback, 'CallsHistoryPlugin', 'list',['test'] );
}; PhoneGap.addConstructor(function(){ PhoneGap.addPlugin("callsListing",new CallsListing); });
window.plugins.callsListing.list( function(r){printResult(r)}, function(e){console.log(e)} ); ႨᆀטႨplugin +BWBTDSJQUࢤ१
ཬࢲ
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" />
ೂޅൌགྷ+4აЧֹ"1*֥ࢌ
"OESPJE
$BMMCBDL4FSWFSğ9NM)UUQ3FRVFTUTFWFS 8FC$ISPN$MJFOUğonJsPrompt BEE+BWB4DSJQU*OUFSGBDF
$BMMCBDL4FSWFSğ9NM)UUQ3FRVFTUTFWFS 8FC$ISPN$MJFOUğڭۂonJsPrompt 'SPN+4UP/BUJWF 'SPN/BUJWFUP+4
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
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
Pluginmanager.java ctx.sendJavascript(cr.toErrorCallbackString(callbackId)); $BMMCBDL4FSWFSKBWBğ9)3TFSWFS PhoneGap.Channel.join(function() { // Start listening for XHR
callbacks setTimeout(function() { if (PhoneGap.UsePolling) { PhoneGap.JSCallbackPolling(); } l +BWBTDSJQU +BWB
*04
+4֞/BUJWF֥๙ document.location = “gap://Class.method/args” /BUJWF֞+4֥๙ UIWebView.stringByEvaluatingJavaScriptFromString webView =[[UIWebView alloc] initWithFrame:webViewBounds];
ൌ২߄6*8FC7JFX Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
EFCVH
XFJOSF
8FJOSFᇂູ4FSWFSđ षؿᆀႨ$ISPNF 4BGBSJषؿ۽ऎটჹӱט ൫၍ႋႨ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
<script src="http://192.168.1.101:8080/target/target-script-min.js#anonymous"> </script> Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
1IPOF(BQ%FCVH4FSWFS Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
ਫ਼ཌ
9 1FSGPSNBODF 8$DPNQBUJCMFđၞႨྟ $BMFOEBS .FTTBHFđ#MVFUPPUIđ"VEJP7JEFP
Mark Dong Developer Evangelist
[email protected]
weibo.com/donglongfei weibo.com/javascriptdev