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. Jmeter系列(5)- jmeter.properties常用配置项讲解

    如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html jmeter.properties 所 ...

  2. Ubuntu下的eclipse配置MapReduce

    下载配置文件: 链接:https://pan.baidu.com/s/13vatPHpDP5HaW0mKuHydUA提取码:pjxi 1)启动hadoop cd /usr/local/hadoop . ...

  3. Certified Scrum Master CSM 中文资料大全

    课程概览 本课程由中国唯一一位获CST认证培训师及LeSS-Friendly Scrum Trainer双重认证讲师,丰富一线实战经验的Scrum教练讲授:姜信宝 BoB Jiang. 敏捷变革中心是 ...

  4. Nginx+Fastdfs

    注: 在配置时,使用非root用户配置 fdfs/fdfs 1.    集群部署 1.1.    准备 创建目录:本文档中所有内容安装到/fdfs目录 [fdfs@5861be93b5b0 /]$mk ...

  5. 文件上传漏洞(pikachu)

    文件上传漏洞 文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像,附件等等.当用户点击上传按钮后,后台会对上传的文件进行判断,比如是否是指定的类型.后缀名.大小等等,然后将其按照设 ...

  6. 自定义spring boot的自动配置

    文章目录 添加Maven依赖 创建自定义 Auto-Configuration 添加Class Conditions 添加 bean Conditions Property Conditions Re ...

  7. Font-Awesome使用教程

    何为Font-Awesome Font Awesome gives you scalable vector icons that can instantly be customized — size, ...

  8. XML--XML从入门到精通 Part 1 认识XML

    XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没有被预定义.您需要 ...

  9. ACM-ICPC 2019 山东省省赛 M Sekiro

    Sekiro: Shadows Die Twice is an action-adventure video game developed by FromSoftware and published ...

  10. Codeforce 140C (贪心+优先队列)补题

    C. New Year Snowmen time limit per test2 seconds memory limit per test256 megabytes inputstandard in ...