成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WebView項目中PhoneGap插件使用細節

移動開發
WebView項目中PhoneGap插件使用細節是本文要介紹的內容,主要是來了解PhoneGap插件的用法,具體內容來看本文詳解。

WebView項目中PhoneGap插件使用細節是本文要介紹的內容,主要是來了解PhoneGap插件的用法,作過android開發的對于startActivityForResult這個方法的調用,應該不會陌生。

它就像是javascript中的模式對話模式,可以在彈出的新頁面中,讓用戶進行操作,并把結果回傳到所調用頁面。當然在android中的實現,是有所差異。

在實現項目中,使用有PhoneGap插件,來作webview應用的開發。

當直接使startActivityForResult(intent,requestcode)這個方法,會提示PhoneGap出錯,

  1. PhoneGapException:CallstartActivityForResult(Command,Intent)instead. 

看源碼,建設調用使用startActivityForResult(intent,-1).這樣寫的話,達不到“模式對話框”的目的。

源碼中還有另一個PhoneGap擴展的方法:

  1. publicvoidstartActivityForResult(Plugincommand,Intentintent,intrequestCode) 

,一開始也沒管那么多,直接就調這個,那個Plugincommand的參數,因為我是主程序調用的,所以很自然的就直接置為null.

測試正常,調用、回調都正常。以后沒事了

項目運行一段時間后,發覺以前從插件發起的startActivityForResult都無法正常回調了。也就是插件里面定義的onActivityResult都沒有被調到,跟蹤發現,所有的回調都被主程序的onActivity給攔截了。

分析以下代碼可以看出PhoneGap插件中,onActivityResult如何與對應插件相綁定,以及產生上述問題的原因:

Java代碼

  1. publicvoidstartActivityForResult(Plugincommand,Intentintent,intrequestCode){  
  2.  
  3. this.activityResultCallback=command;  
  4.  
  5. thisthisthis.activityResultKeepRunning=this.keepRunning;  
  6.  
  7. //Ifmultitaskingturnedon,thendisableitforactivitiesthatreturnresults  
  8.  
  9. if(command!=null){  
  10.  
  11. this.keepRunning=false;  
  12.  
  13. }  
  14.  
  15. //Startactivity  
  16.  
  17. super.startActivityForResult(intent,requestCode);  
  18.  
  19. }  
  20.  
  21. protectedvoidonActivityResult(intrequestCode,intresultCode,Intentintent){  
  22.  
  23. super.onActivityResult(requestCode,resultCode,intent);  
  24.  
  25. Plugincallback=this.activityResultCallback;  
  26.  
  27. if(callback!=null){  
  28.  
  29. callback.onActivityResult(requestCode,resultCode,intent);  
  30.  
  31. }  
  32.  
  33. }  
  34.  
  35. publicvoidstartActivityForResult(Plugincommand,Intentintent,intrequestCode){  
  36.  
  37. this.activityResultCallback=command;  
  38.  
  39. thisthisthis.activityResultKeepRunning=this.keepRunning;  
  40.  
  41. //Ifmultitaskingturnedon,thendisableitforactivitiesthatreturnresults  
  42.  
  43. if(command!=null){  
  44.  
  45. this.keepRunning=false;  
  46.  
  47. }  
  48.  
  49. //Startactivity  
  50.  
  51. super.startActivityForResult(intent,requestCode);  
  52.  
  53. }  
  54.  
  55. protectedvoidonActivityResult(intrequestCode,intresultCode,Intentintent){  
  56.  
  57. super.onActivityResult(requestCode,resultCode,intent);  
  58.  
  59. Plugincallback=this.activityResultCallback;  
  60.  
  61. if(callback!=null){  
  62.  
  63. callback.onActivityResult(requestCode,resultCode,intent);  
  64.  
  65. }  
  66.  

看來想在主程序(繼承GapDroid)中使用startActivityForResult方法,只能采用綁定插件的辦法了。

分析過程是相當無聊。只列出來解決辦法,希望有更好處理的同仁,給予回復:

在主程序中定義一個空的插件,所有需要用到startActivityForResult的場合,都使用這個空的插件來作為***參數。并在空插件中覆蓋onActivityResult方法(里面可以是直接訪問、調用主程序的代碼)。

Java代碼

  1. /**  
  2. *自定義一個空的插件,僅為完成原DroidGap中的事件處理邏輯  
  3. */  
  4. classEmptyPluginextendsPlugin{  
  5. @Override  
  6. publicPluginResultexecute(Stringaction,JSONArrayargs,  
  7. StringcallbackId){  
  8. //TODOAuto-generatedmethodstub  
  9. returnnull;  
  10. }  
  11. @Override  
  12. publicvoidonActivityResult(intrequestCode,intresultCode,  
  13. Intentintent){  
  14. //TODOAuto-generatedmethodstub  
  15. if(resultCode==RESULT_OK){  
  16. if(requestCode==SETTING_CODE){  
  17. ........................................自己的處理代碼............  
  18. }  
  19. }  
  20. }  
  21. }  
  22. /**  
  23. *自定義一個空的插件,僅為完成原DroidGap中的事件處理邏輯  
  24. */  
  25. classEmptyPluginextendsPlugin{  
  26. @Override  
  27. publicPluginResultexecute(Stringaction,JSONArrayargs,  
  28. StringcallbackId){  
  29. //TODOAuto-generatedmethodstub  
  30. returnnull;  
  31. }  
  32. @Override  
  33. publicvoidonActivityResult(intrequestCode,intresultCode,  
  34. Intentintent){  
  35. //TODOAuto-generatedmethodstub  
  36. if(resultCode==RESULT_OK){  
  37. if(requestCode==SETTING_CODE){  
  38. ........................................自己的處理代碼............  
  39. }  
  40. }  
  41. }  

Java代碼

  1. privatefinalEmptyPluginep=newEmptyPlugin();  
  2. privatefinalEmptyPluginep=newEmptyPlugin(); 

Java代碼

  1. startActivityForResult(ep,intent,111111); 

小結:WebView項目中PhoneGap插件使用細節startActivityForResult的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-09-13 09:49:59

PhoneGap插件

2011-10-11 10:06:12

PhoneGap插件

2011-12-19 08:57:46

PhoneGapNativeContr

2011-12-23 10:02:37

PhoneGapAndroid插件

2012-03-07 11:17:19

AndroidPhoneGap插件

2011-09-02 13:38:56

PhoneGap插件Android

2009-06-24 17:34:58

使用JSF的經驗

2014-07-04 09:43:22

2024-10-17 08:58:31

2023-11-30 09:00:00

TypeScript開發

2020-10-27 14:15:42

SpringBoot

2012-03-07 11:23:09

PhoneGapAndroid代碼交互

2012-05-17 08:29:54

PhoneGap誤區

2019-03-25 10:30:19

開發技能代碼

2017-07-04 19:02:17

ReacRedux 項目

2024-05-24 10:01:12

2024-04-03 09:03:05

項目分支管理

2009-06-29 15:51:48

Spring容器

2023-04-21 10:08:00

版本工具依賴關系

2015-11-05 11:47:37

圖片統計項目開發技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人三级视频 | 国产高清在线 | jlzzjlzz欧美大全| 国产天天操 | 欧美视频中文字幕 | 视频精品一区 | 久久精品日产第一区二区三区 | 国产亚洲一区二区三区 | 免费在线观看一区二区 | 97av视频在线观看 | 欧美日韩在线观看一区 | 日本涩涩视频 | 在线观看国产视频 | 成人av网站在线观看 | 欧美一级二级三级视频 | 色婷婷综合成人av | 综合色影院 | 亚洲精品电影在线观看 | 精品久久久久久久 | 宅男噜噜噜66一区二区 | 欧美在线国产精品 | 97福利在线 | 久久久久久久久久久久久久久久久久久久 | 在线日韩av电影 | 日韩在线一区二区三区 | 日韩精品一区在线观看 | 丁香婷婷久久久综合精品国产 | 神马久久春色视频 | 国产一区二区三区 | 亚洲欧美日韩精品久久亚洲区 | 欧美激情在线播放 | 欧美日韩一区在线 | 在线日韩 | 九九久久精品 | 九九亚洲 | 人人人人爽 | 男人天堂视频在线观看 | 欧美日韩在线一区二区三区 | 亚洲在线一区二区三区 | 国产亚洲精品a | 日本高清不卡视频 |