【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❤

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章