写点什么

Nextcloud Android 客户端 - 安全高效的文件同步与管理

作者:qife
  • 2025-07-02
    福建
  • 本文字数:2174 字

    阅读完需:约 7 分钟

项目标题与描述

Nextcloud Android 客户端是官方推出的移动端应用,让您能够随时随地访问和管理您的 Nextcloud 云存储。该项目基于 AGPL-3.0-or-later 和 GPL-2.0-only 双协议开源,支持与 Nextcloud 服务器 16 及以上版本配合使用。

功能特性

  • 文件同步:双向同步服务器和本地文件

  • 自动上传:支持照片和视频自动上传,可设置仅在 WiFi 下上传

  • 端到端加密:保护您的敏感数据安全

  • 离线访问:标记文件为离线可用,随时随地访问

  • 多媒体支持:内置图片编辑器和媒体播放器

  • 多账户管理:支持同时管理多个 Nextcloud 账户

  • 暗黑模式:支持系统级暗黑主题

  • 文件预览:支持多种文件类型的预览

  • 分享功能:轻松分享文件和文件夹

安装指南

系统要求

  • Android 7.0 (Nougat) 或更高版本

  • Nextcloud 服务器 16 或更高版本

安装方式

  1. Google Play 安装

  2. 访问Google Play商店直接安装

  3. F-Droid 安装

  4. 访问F-Droid仓库下载安装

  5. 手动安装 APK

  6. 从 GitHub Releases 页面下载最新 APK

  7. 在设备上启用"未知来源"安装权限

  8. 安装下载的 APK 文件

开发环境搭建

如需从源码构建,需要:


  • Android SDK

  • Git

  • 配置 Android Studio 代码格式化工具

使用说明

基础使用

  1. 添加账户:


// 示例代码:添加Nextcloud账户AccountManager accountManager = AccountManager.get(context);Account newAccount = new Account(accountName, "nextcloud");accountManager.addAccountExplicitly(newAccount, password, null);
复制代码


  1. 文件上传示例:


// 创建上传任务OCUpload ocUpload = new OCUpload(    localFilePath,     remotePath,     accountName);UploadsStorageManager uploadsStorageManager = new UploadsStorageManager(contentResolver);uploadsStorageManager.storeUpload(ocUpload);
复制代码


  1. 文件下载示例:


OCFile file = storageManager.getFileByPath(remotePath);DownloadFileOperation download = new DownloadFileOperation(    user,     file,     context);download.execute(client);
复制代码

核心功能 API

  1. 文件操作:


// 创建文件夹CreateFolderOperation createOp = new CreateFolderOperation(    path,     user,     context,     storageManager);createOp.execute(client);
// 删除文件RemoveFileOperation removeOp = new RemoveFileOperation( file, false, user, false, context, storageManager);removeOp.execute(client);
复制代码


  1. 同步文件夹管理:


// 配置自动同步文件夹SyncedFolder syncedFolder = new SyncedFolder(    localPath,    remotePath,    true,  // WiFi only    false, // Charging only    true,  // Upload existing    accountName);SyncedFolderProvider provider = new SyncedFolderProvider(contentResolver);provider.storeSyncedFolder(syncedFolder);
复制代码

核心代码

文件数据管理

/** * OCFile类表示Nextcloud中的文件或文件夹 */public class OCFile implements Parcelable, Comparable<OCFile>, ServerFileInterface {    private String remotePath;  // 远程路径    private String localPath;   // 本地存储路径    private String mimeType;    // MIME类型    private long fileLength;    // 文件大小    private long modifiedAt;    // 修改时间    private boolean isFolder;   // 是否是文件夹        // 获取文件缩略图    public Bitmap getThumbnail(Context context) {        return ThumbnailsCacheManager.getBitmapFromDiskCache(            String.valueOf(getFileId()),            context.getResources().getDisplayMetrics()        );    }}
复制代码

端到端加密实现

/** * 端到端加密元数据管理 */public class DecryptedFolderMetadataFileV1 {    private DecryptedMetadata metadata;    private Map<String, DecryptedFile> files;        public static class DecryptedFile {        private Data encrypted;        private String initializationVector;        private String authenticationTag;                // 获取加密文件数据        public Data getEncrypted() {            return this.encrypted;        }    }}
复制代码

账户认证流程

/** * 账户认证Activity */public class AuthenticatorActivity extends AppCompatActivity {    private AccountAuthenticatorResponse mAccountAuthenticatorResponse;        protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        // 初始化认证响应        mAccountAuthenticatorResponse = getIntent().getParcelableExtra(            AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE        );    }        // 处理登录成功    private void onLoginSuccess(String username, String password, String serverUrl) {        Account account = new Account(username, "nextcloud");        Bundle result = new Bundle();        result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);        result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type);        setAccountAuthenticatorResult(result);    }}
复制代码


更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码


办公AI智能小助手


用户头像

qife

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
Nextcloud Android 客户端 - 安全高效的文件同步与管理_开源_qife_InfoQ写作社区