zoukankan      html  css  js  c++  java
  • 【Android】是时候为你的应用加上WebDav同步了

    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❤

  • 相关阅读:
    php中常见的大坑,开发中应尽量避免
    ElasticSearch快速入门【建议收藏】
    OWASP Secure Headers Project
    专科是文科,是否可以报考理科的本科
    一网通办 下载发票
    “次幂”和“次方”有什么区别?
    详讲口诀“奇变偶不变,符号看象限”
    成考数学知识点 高起专
    如何下载腾讯课堂的视频
    JDK发布版本的总结
  • 原文地址:https://www.cnblogs.com/robotpaul/p/12915001.html
Copyright © 2011-2022 走看看