PhoneGap插件编写,移动端h5开发框架

本文详细介绍了如何在PhoneGap应用中编写DirectoryListing插件,从创建应用、添加依赖到实现JavaScript接口,最后进行测试。通过这个插件,可以获取Android设备目录的JSON格式列表。遵循步骤,开发者可以将此插件集成到自己的移动项目中,实现文件系统的目录浏览功能。
摘要由CSDN通过智能技术生成
  1. *

  2. * DirectoryListing.list("/sdcard",

  3. *        successCallback

  4. *        failureCallback);

  5. *

  6. * }

  7. * </pre>

  8. *

  9. * @author Rohit Ghatol

  10. *

  11. */

  12. public class DirectoryListPlugin extends Plugin {

  13. /** List Action */

  14. public static final String ACTION = “list”;

  15. /*

  16. * (non-Javadoc)

  17. *

  18. * @see com.phonegap.api.Plugin#execute(java.lang.String,

  19. * org.json.JSONArray, java.lang.String)

  20. */

  21. @Override

  22. public PluginResult execute(String action, JSONArray data, String callbackId) {

  23. Log.d(“DirectoryListPlugin”, “Plugin Called”);

  24. PluginResult result = null;

  25. if (ACTION.equals(action)) {

  26. try {

  27. String fileName = data.getString(0);

  28. JSONObject fileInfo = getDirectoryListing(new File(fileName));

  29. Log

  30. .d(“DirectoryListPlugin”, "Returning "

  31. + fileInfo.toString());

  32. result = new PluginResult(Status.OK, fileInfo);

  33. } catch (JSONException jsonEx) {

  34. Log.d(“DirectoryListPlugin”, "Got JSON Exception "

  35. + jsonEx.getMessage());

  36. result = new PluginResult(Status.JSON_EXCEPTION);

  37. }

  38. } else {

  39. result = new PluginResult(Status.INVALID_ACTION);

  40. Log.d(“DirectoryListPlugin”, "Invalid action : " + action

  41. + " passed");

  42. }

  43. return result;

  44. }

  45. /**

  46. * Gets the Directory listing for file, in JSON format

  47. *

  48. * @param file

  49. *            The file for which we want to do directory listing

  50. * @return JSONObject representation of directory list. e.g

  51. *         {“filename”:"/sdcard"

  52. *         ,“isdir”:true,“children”:[{“filename”:“a.txt”

  53. *         ,“isdir”:false},{…}]}

  54. * @throws JSONException

  55. */

  56. private JSONObject getDirectoryListing(File file) throws JSONException {

  57. JSONObject fileInfo = new JSONObject();

  58. fileInfo.put(“filename”, file.getName());

  59. fileInfo.put(“isdir”, file.isDirectory());

  60. if (file.isDirectory()) {

  61. JSONArray children = new JSONArray();

  62. fileInfo.put(“children”, children);

  63. if (null != file.listFiles()) {

  64. for (File child : file.listFiles()) {

  65. children.put(getDirectoryListing(child));

  66. }

  67. }

  68. }

  69. return fileInfo;

  70. }

  71. }

5.将插件类导出成jar 包

Eclipse中如下操作:

  • 在要生成jar的项目上右击,选择菜单上的Export(导出)

  • 导出类型选择Jar File

  • 选择或者输入生成路径

  • 选择要导出的类

我们导出成directorylist.jar

6.实现JavaScript插件

  • 创建一个名为DirectoryListing的类

  • 创建一个成员函数list()

  • 在成员函数中调用PhoneGap.exec(<>,<>,<>,<>,<>);

  • 将js文件保存为directorylisting.js

代码:

[javascript]

/**

  1. *

  2. * @return Object literal singleton instance of DirectoryListing

  3. */

  4. var DirectoryListing = {

  5. /**

  6. * @param directory The directory for which we want the listing

  7. * @param successCallback The callback which will be called when directory listing is successful

  8. * @param failureCallback The callback which will be called when directory listing encouters an error

  9. */

  10. list: function(directory,successCallback, failureCallback) {

  11. return PhoneGap.exec(successCallback,        //Success callback from the plugin

  12. failureCallback,        //Error callback from the plugin

  13. ‘DirectoryListPlugin’,  //Tell PhoneGap to run “DirectoryListingPlugin” Plugin

  14. ‘list’,                 //Tell plugin, which action we want to perform

  15. [directory]);           //Passing list of args to the plugin

  16. }

  17. };

三、测试

====

1.创建一个PhoneGap应用 http://www.phonegap.com/start/#android

2.将 directorylisting.jar 加入工程依赖

3.将directorylisting.js放入到 /assets/www 目录下。

4.在 /res/xml/plugins.xml 文件中添加

[html]

<plugin name=“DirectoryListPlugin” value=“com.trial.phonegap.plugin.directorylisting.DirectoryListPlugin” />

5.在index.html中调用DirectoryListing.list

代码:

[html]

总结

Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!

上面分享的字节跳动公司2021年的面试真题解析大全,笔者还把一线互联网企业主流面试技术要点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

Android学习PDF+学习视频+面试文档+知识点笔记

【Android高级架构视频学习资源】

(img-TFQMza8Y-1645109704149)]

Android学习PDF+学习视频+面试文档+知识点笔记

【Android高级架构视频学习资源】

Android部分精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值