WebDav是什么?

WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1,在GETPOSTHEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制

上面是来自百度百科的介绍。从个人理解是:安卓开发有时候并不是一个完整的系统,即没有账号系统,没有必要特地去写一个后台搭建一个数据库来维护这些数据。然而诸如笔记、日程等数据,应用不能很好地保存就显得很不人性化。而WebDav就像github一样,应用可以将数据托管在上面,更新数据就上传,恢复数据就下拉,方便安全,对于个人开发者无疑是一个很好的选择。

那么,开发者该如何接入WebDav呢?

期间我写了一篇关于WebDav for Android文章,由于sardine是需要多线程来执行的,会写许多重复代码,因此就萌生了把代码封装成一个库直接调用的想法。

关于WebDav的配置可以参考http://help.jianguoyun.com/?tag=webdav

手机端可以参考 坚果云手机端同步教程

如何食用

implementation 'com.paul623.wdsyncer:wdsyncer:0.0.1'

兼容性

安卓P及以上需要配置网络安全策略

 android:usesCleartextTraffic="true"

接口

目前版本是0.0.1,已经实现的功能

  /**
* 上传文件
* @param fileName 文件名 包含后缀名
* @param fileLoc 文件目录 如:homeLoc/
* @param listener 返回信息为 文件路径,上传成功
* */
public void uploadFile(String fileName, String fileLoc, File f, OnSyncResultListener listener);
/**
* 上传String类型数据
* 你可以直接把文件格式设置为txt即可
* @param fileName 文件名 包含后缀名
* @param fileLoc 文件目录 如:homeLoc/
* @param listener 返回信息为 文件路径,上传成功
* */
public void uploadString(String fileName, String fileLoc, String content, OnSyncResultListener listener); /**
* 下载文件
* @param listener 返回的是文件保存路径
* 默认保存路径在:应用的私有路径下
* */
public void downloadFile(String fileName, String fileLoc, OnSyncResultListener listener);
/**
* 下载文件
* @param listener 返回的是内容
* */
public void downloadString(String fileName, String fileLoc, OnSyncResultListener listener); /**
* 列出所有文件信息
* @param listFileListener 具体参看DavData
* */
public void listAllFile(String dir, OnListFileListener listFileListener); /**
* 删除文件
* @param fileDir 文件目录
* */
public void deleteFile(String fileDir, OnSyncResultListener listener);

使用示例

1.配置账户信息

请提前通过SyncConfig来配置相关信息(账户、密码、服务器地址)(否则会报错)

服务器地址可以不用配置,默认为坚果云

SyncConfig config=new SyncConfig(context);
config.setPassWord("你的密码");
config.setUserAccount("你的账户");

2.调用并回调

由于所有操作都必须在线程中执行,故你需要自行处理线程操作,这里以上传为例。

 SyncManager syncManager=new SyncManager(MainActivity.this);
syncManager.uploadString("test.txt", "WDSyncer", "如你所见,WebDavSyncer已经配置成功!", new OnSyncResultListener() {
@Override
public void onSuccess(String result) {
//成功
Looper.prepare();
Toast.makeText(MainActivity.this,result,Toast.LENGTH_SHORT).show();
Looper.loop();
} @Override
public void onError(String errorMsg) {
//失败
Looper.prepare();
Toast.makeText(MainActivity.this,errorMsg,Toast.LENGTH_SHORT).show();
Looper.loop();
}
});

或者你可以使用Handler来控制。

更多例子请查看项目代码 https://github.com/paul623/WebDavSyncerDemo

欢迎star❤

【Android】是时候为你的应用加上WebDav同步了的更多相关文章

  1. Android Gradle实用技巧——APK文件名中加上SVN版本号,日期等

    有时候,我们会希望能把APK文件名上带上打包日期,打包时svn的版本号,应用版本号等.当然这些也可以手动添加,但是手动的话也未免太不优雅了,而且可能会出错. 利用Gradle,我们可以让打包出来的ap ...

  2. Android Studio连接SQLite数据库与SQLite Studio实时同步的实现

    最近学习用到了android开发连接数据库这一块,发现连接成功后,都要先访问安卓项目的数据库路径data/data/项目/databases,然后把对应的db文件拷出来,再在SQLite的可视化工具中 ...

  3. 我的Android进阶之旅------>Android自定义View来实现解析lrc歌词并同步滚动、上下拖动、缩放歌词的功能

    前言 一LRC歌词文件简介 1什么是LRC歌词文件 2LRC歌词文件的格式 LRC歌词文件的标签类型 1标识标签 2时间标签 二解析LRC歌词 1读取出歌词文件 2解析得到的歌词内容 1表示每行歌词内 ...

  4. 九宫格 android:stretchMode="columnWidth",缩放与列宽大小同步

    转载▼   <GridView android:id="@+store/grid" android:layout_width="wrap_content" ...

  5. android帧动画,移动位置,缩放,改变透明度等动画讲解

    1.苦逼的需求又来了,需要实现一些动画效果,第一个想到的是播放gif图片,但是这样会占包的资源,并且清晰度不高,于是想着程序实现,自己用帧动画+缩放+移动+透明度 实现了一些想要的效果,这里跟大家分享 ...

  6. Android开发2:事件处理及实现简单的对话框(Toast,AlertDialog,Snackbar,TextInputLayout的使用)

    前言 啦啦啦~又要和大家一起学习Android开发啦,博主心里好激动哒~ 在上篇博文中,我们通过线性布局和基础组件的使用,完成了一个简单的学生课外体育积分电子认证系统的界面,本篇博文,将和大家一起熟悉 ...

  7. Android 面试题汇总

    面试题基础储备 1.Activity相关 a.Activity的特点 1.可见  2.可交互 他之所以可交互,是因为他同时实现了Window.Callback和KeyEvent.Callback, 可 ...

  8. 大叔也说Xamarin~Android篇~环境部署与破解

    回到目录 现在移动开发很HOT,以至于很多人都转向了它,大叔也不例外,这次有机制接触一下xamarin这个东西,其实之前也用于xamarin,只是用来写网页程序,没有接触到移动开发,对于xamarin ...

  9. Android Studio常见问题 -- uses-sdk:minSdkVersion 8 cannot be smaller than version 9 declared in library

    问题描述 * What went wrong:Execution failed for task ':app:processDebugManifest'.> Manifest merger fa ...

随机推荐

  1. ASP.NET Core Razor Pages 初探

    最近新建 Asp.net Core MVC 项目的时候不小心选错了个模板,发现了一种新的项目模板.它使用cshtml视图模板,但是没有Controller文件夹.后来才发现这是ASP.NET Core ...

  2. 尤雨溪在直播中讲到的Vue3.0 Beta的那些特性,快记笔记了

    前言 在那天风雨交加的夜晚,Vue的创作者尤雨溪尤大大在b站直播分享了Vue.js 3.0 Beta最新进展.我对直播的内容进行了一下整理.整整用了三天的空余时间赶上了 1. 全新文档RFCs Vue ...

  3. WANNACRY病毒中的加密技术分析

    WANNACRY病毒中的加密技术分析 2019/11/6 16:56:46 分析WANNACRY病毒中的加解密技术的应用.分析内容包括但不限于:对称密码技术和公钥密码技术的作用:受害者支付赎金后就会恢 ...

  4. 结构体 偏移量 (size_t)&(((s *)0)->m) , list相关

    在Windows SDK 的stddef.h 中 #define offsetof(s,m) (size_t)&(((s *)0)->m) 应用例如 #define list_conta ...

  5. Linux安装jdk(详细教程)

    一.JDK介绍 JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JA ...

  6. Spring Boot devtool的使用

    文章目录 添加Spring Boot devtool依赖 默认属性 自动重启 Live Reload 全局配置 Spring Boot devtool的使用 Spring Boot为我们提供了一个便捷 ...

  7. js 实现淘宝放大镜功能,可更改配置参数 带完整版解析代码[magnifier.js]

    前言:         本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽.         本篇文章为您分析一下原生JS写淘宝放大镜效果 基本功能: 运 ...

  8. 14.在Python中lambda函数是什么

    在Python中lambda函数是什么? It is a single expression anoymous function often used as inline function. lamb ...

  9. showModalDialog使用讲解

    基本介绍:          showModalDialog()                              (IE 4+ 支持)          showModelessDialog ...

  10. pv(PageView)的解释

    http://blog.sina.com.cn/s/blog_5007d1b10100moka.html 本文转自hblxp32151CTO博客,原文链接:http://blog.51cto.com/ ...