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

随着安卓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开发知识。


相关知识:
安卓10开发版可以root
在Android中,Root是指一种越权操作,让普通用户能够获得超级管理员权限。Root后,用户可以获得更高的权限,可以访问系统文件,可以卸载不需要的应用程序,调整系统参数等等。Android 10开发版同样可以进行Root操作,以下是详细介绍和相应原理。
2023-05-23
uniapp和原生安卓开发区别
UniApp是一个跨平台的应用程序开发框架,利用它可以用相同的代码开发出微信小程序、原生Android、iOS等多个平台的应用。原生安卓开发则是使用Java语言和Android SDK进行开发。下面将介绍UniApp和原生安卓开发的区别。1. 开发语言Un
2023-05-23
openvpn安卓开发
OpenVPN是一个开源的VPN客户端软件,支持多平台,可以在Windows,MAC,Linux等平台上运行。但是本文主要介绍OpenVPN在Android平台上的开发原理及详细介绍。一、OpenVPN项目概述OpenVPN是一个开源的VPN客户端软件,可
2023-05-23
ios开发和安卓开发需要的技能
iOS开发和Android开发是目前移动应用开发的两大主流领域,两者都有自己的特点和技术难点。在开发过程中需要掌握一定的技能,下面将分别介绍 iOS 和 Android 在开发中需要的技能。一、iOS开发需要的技能1. Swift语言:Swift 是一种开
2023-05-23
ios app开发和安卓app开发的区别
移动应用开发是手机运营商、设备制造商和开发者之间的复杂合作。也就是为移动设备设计和开发专门的软件应用程序,包括iOS和Android两大平台。iOS和Android平台在功能和应用领域均有其独特的优势,它们虽然在很多方面相似,但在实现方式和用户体验上存在很
2023-05-23
adapter安卓开发
在 Android 开发中,adapter 是一个非常重要的概念。它是一种连接数据和 UI 的桥梁,可以将数据源中的数据转化为可以在 UI 中展示的视图。本文将详细介绍 adapter 在 Android 开发中的原理和使用。一、adapter 的作用在将
2023-05-23
2018安卓开发前景
随着智能手机的普及和人们对移动应用的需求增加,安卓开发的前景越来越广阔。根据市场研究公司Statista发布的数据,自2011年以来,安卓操作系统在全球智能手机市场的份额迅速增长,2017年达到86.2%。相信在未来的几年中,安卓市场的份额还会持续增加。那
2023-05-23
安卓怎么找app开发者信息
在安卓设备上找到某个应用程序的开发者信息并不难。以下是一些具体的步骤和注意事项,帮助您了解在安卓设备上如何找到app开发者信息的原理。1. 从应用商店获取信息:前往应用的市场页面,例如:Google Play商店。在应用详情页面下方,通常可以找到开发者的名
2023-04-28
安卓开发小程序简单还是app
安卓小程序和App的概念不同,小程序是在特定平台上运行的轻量级应用程序,而App是在移动设备上运行的应用程序,通常需要下载安装到手机上。安卓小程序与App开发的主要差异在于技术实现层面。使用App开发需要掌握Java或Kotlin等主要编程语言,掌握移动开
2023-04-28
安卓开发app用什么软件
安卓应用开发可以使用许多不同的工具和软件。以下是一篇关于Android开发工具和软件的详细文章。希望能对你有所帮助!标题:安卓开发入门 - 主要软件和工具介绍引言:安卓应用开发是指使用特定的工具和技术创建运行在安卓操作系统上的应用程序。作为一种全球普及的开
2023-04-28
安卓app开发计算器
安卓app开发计算器可以分为以下几个步骤:1.创建新的Android项目并添加布局文件先创建一个新项目,然后在XML文件中创建一个简单的布局,包括TextView和Button控件,用于显示计算结果和输入数字或符号。2.设置按键的输入和操作在MainAct
2023-04-28
安卓app开发兼容性怎么搞
安卓系统是一个开放的操作系统,因此有很多不同的版本和设备。这种多样性也导致了兼容性的问题。在开发安卓应用程序时,兼容性是一个必须要考虑的因素。以下是一些关于安卓兼容性的概述和建议:1. 最低版本:在开发任何Android应用之前,你必须确定你的应用程序的最
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1