导航
当前位置:首页>>app
在线生成app,封装app

安卓10后如何开发文件管理器

2023-11-14 围观 : 9次

随着安卓10版本的发布,相比之前的版本,文件管理器的使用和开发产生了一些变化。本文将介绍安卓10后如何开发文件管理器,包括其原理和详细介绍。

1.原理

在安卓10中,Google引入了存储访问框架(SAF),该框架提供了一个标准化的API,用于访问各种不同的存储提供程序,如设备存储和云服务。文件管理器应该使用存储访问框架来向用户呈现他们的文件,并进行文件的管理和操作。

使用存储访问框架,开发人员可以创建Storage Access Framework(SAF)指定的文档提供程序,使其他应用程序或用户可以从中获取或保存文档。文档提供程序必须符合一组标准接口约定,以便与文件选择器对话框和系统文件管理器等框架组件交互。以下是文档提供程序的基本构成:

1. 根:一种文档对象,它是整个存储系统的起点。

2. 文档:一种文档对象,它是用户和其他应用程序交互的主要工具。

3. 目录:一种文档对象,它是文档以及其他目录的容器。

文档提供程序必须实现以下接口:

1. DocumentsProvider:用于提供整个文档集合的根目录

2. Document:用于表示每个单独的文档或目录。

在此基础上,我们可以通过实现DocumentsProvider接口来创建文档提供程序,以便在Android系统的文件管理器和其他应用程序中使用。

2.详细介绍

以下是开发文件管理器的详细步骤:

## 步骤一:创建DocumentsProvider

创建DocumentsProvider类,对根目录的访问和返回文档进行管理。这里实现的DocumentsProvider必须要实现以下方法:

```java

public final Cursor query(...) {...}

public final int update(...) {...}

public final String getType(...) {...}

public final Uri insert(...) {...}

public final int delete(...) {...}

public final ParcelFileDescriptor openDocument(...) throws FileNotFoundException {...}

```

## 步骤二:添加Metadata信息

在DocumentsProvider中添加Metadata信息,包括根目录和文档,以便在使用文件选择器时显示。

```java

android:name=".MyDocumentsProvider"

android:authorities="com.mycompany.sample.documents"

android:exported="true"

android:grantUriPermissions="true"

android:permission="android.permission.MANAGE_DOCUMENTS">

android:name="android.provider.extra.LOCAL_ONLY"

android:value="true" />

android:name="android.support.FILE_PROVIDER_PATHS"

android:resource="@xml/provider_paths" />

```

## 步骤三:定义根目录和文档

在DocumentsProvider中定义根目录和文档,用于管理和操作文件。

```java

@Override

public Cursor queryRoots(String[] projection) throws FileNotFoundException {

MatrixCursor result = new MatrixCursor(projection != null ? projection :

DEFAULT_ROOT_PROJECTION);

MatrixCursor.RowBuilder row = result.newRow();

...

return result;

}

@Override

public Cursor queryChildDocuments(String parentDocumentId, String[] projection, String sortOrder) throws FileNotFoundException {

MatrixCursor result = new MatrixCursor(projection != null ? projection :

DEFAULT_DOCUMENT_PROJECTION);

MatrixCursor.RowBuilder row = result.newRow();

...

return result;

}

```

## 步骤四:实现文件操作

在DocumentsProvider中实现文件操作,包括文件创建、删除、重命名、移动等。

```java

@Override

public String createDocument(String parentDocumentId, String mimeType, String displayName) throws FileNotFoundException {

...

}

@Override

public void deleteDocument(String documentId) throws FileNotFoundException {

...

}

@Override

public String renameDocument(String documentId, String displayName) throws FileNotFoundException {

...

}

@Override

public void moveDocument(String documentId, String newParentDocumentId) throws FileNotFoundException {

...

}

```

## 步骤五:添加文件权限

添加文件权限,对外提供文件操作的访问。

```xml

android:name="com.mycompany.sample.documents.PERMISSION"

android:protectionLevel="signature" />

```

通过以上步骤,我们就实现了一个基本的文件管理器。在实际应用中,还可以添加更多的功能和特性,如文件搜索、排序、筛选等。

总结

在安卓10版本中,文件管理器的开发原理和方法发生了改变。使用存储访问框架和DocumentsProvider接口,开发人员可以创建一个完整的文件管理器应用程序,从而实现文件的管理和操作。但是,具体实现需要注意许多细节和技巧,仅靠这篇文章可能难以完全掌握。如果您对此有所兴趣,可以进一步查阅相关的开发文档或学习更多的Android开发知识。

相关文章
  • uniapp授权位置权限(GPS位置)的例子

    #第一次调用定位接口时,会弹窗请求是否授权//获取定位getLocation(){uni.getLocation({...

    2023-07-21
  • 苹果手机转apk

    苹果手机转apk的过程,实际上是将iOS系统下的应用程序,转换成安卓系统下的应用程序的过程。这个过程并不是简单的复制粘贴,需要通过特定的工具和技术来实现。首先,我们需要了解iOS和安卓系统的应用程序有什么不同之处。iOS系统下的应用程序通常是以.ipa格式打包的,而安卓系统下的应用程序则是以.apk...

    2023-10-13
  • app 应用程序开发

    随着移动互联网的快速发展,移动应用程序(APP)的开发也变得越来越受欢迎和需求。有些人认为开发一个应用程序是一项艰巨的任务,需要专业的技能。然而事实上,任何人都可以学习和开发自己的应用程序,只需要掌握一些基本知识和技能。APP的开发主要分为三个步骤:前端开发、后端开发和数据库开发。前端涉及用户界面(...

    2023-11-04
  • 安卓11怎么调开发者选项

    安卓11是Android的最新版本,具有更快的性能和更好的隐私和安全性能。开发者选项是一种在Android设备上启用高级技术的设置,例如USB调试、GPU渲染、布局边界和CPU使用情况等。在本文中,我将详细介绍如何在安卓11上调整开发者选项以获得更好的控制和定制。步骤1:打开“设置”在您的安卓11设...

    2023-11-17
  • htmlapp页面

    HTMLApp页面:原理与详细介绍 HTMLApp页面:原理与详细介绍 在互联网领域中,HTML App 页面已成为一种常见且有效的应用程序实现方式。它结合了 HTML、CSS 和 JavaScript 技术,认为开发者提供了一个方便、高效和跨平台的应用程序开发平台。 一、HTML A...

    2023-11-25