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


相关知识:
阿里巴巴安卓开发加班多
阿里巴巴作为电商巨头,其安卓开发岗位是一份高薪且备受瞩目的职业。然而,随之而来的是加班成为常态。那么,为什么阿里巴巴安卓开发岗位加班多呢?下面,我们来分析原因并详细介绍。一、需求多阿里巴巴是一个互联网巨头,公司的各种业务线都需要有对应的移动端开发支持。因此
2023-05-23
swift开发安卓应用
在移动应用开发中,很多开发者都会选用Native开发,比如对于iOS开发而言,很多开发者选择用Swift来进行开发。那么对于Android开发而言,Swift是不支持的,因为Swift是一个运行在iOS及Mac OS X平台上的编程语言。但是如果你作为一个
2023-05-23
miui 13开发版安卓11
MIUI是小米公司推出的基于Android系统的操作系统,它采用了苹果的平面化设计风格,支持更多的主题换肤和个性化设置,除了基本的通讯录、短信、音乐、拍照、闹钟等功能,还支持了小米生态链的产品,更加方便我们的生活。 MIUI 13是小米正在研发中的最新版本
2023-05-23
linux开发安卓应用合适吗
Linux是一种自由和开放源代码的类Unix操作系统,它可以运行在各种设备上,如服务器、个人电脑、移动设备和嵌入式设备等。由于Linux操作系统本身有许多优点,比如高度兼容性、强大的安全性、弹性、可靠性和可定制化等,使得许多开发者考虑使用Linux来开发应
2023-05-23
app安卓开发ui
APP安卓开发的UI指的是应用程序的用户界面设计,UI设计的好坏将直接影响APP的使用体验和使用者的感受。好的UI设计,可以提高用户舒适感和满意度,促进用户留存和增加广告点击率。本文将为大家介绍APP安卓开发UI的原理和详细介绍。一、UI设计的原理1.设计
2023-05-23
android studio开发安卓教程
Android Studio是谷歌官方和专用于Android开发的集成开发环境,是目前最流行的Android开发工具之一。它集成了Android SDK,使得开发者能够非常方便地开发出各种高品质的Android应用程序。首先,我们需要安装Android S
2023-05-23
13寸安卓开发
13寸安卓开发是指开发运行在13寸安卓设备上的应用程序。13寸安卓设备一般指平板电脑或笔记本电脑。在开发13寸安卓应用程序时,开发人员需要考虑设备的屏幕分辨率、大小、运行速度等因素。在开发13寸安卓应用程序时,首先需要安装好Android Studio开发
2023-05-23
记日记安卓app开发源码
记日记安卓app的开发可以用Java语言和Android Studio开发工具完成。以下是开发该应用所需的主要功能和技术:1. 数据库:使用SQLite数据库存储用户的日记数据。2. 用户界面:使用Android内置UI组件(TextView、EditTe
2023-04-28
安卓手机app 开发
安卓手机APP开发详细介绍安卓(Android)是谷歌开发的一种移动操作系统,基于Linux内核,设计用于触摸屏手机和平板电脑等移动设备。安卓APP开发是一个将创意和想法转换为实际可运行在安卓设备上的应用程序的过程。本文将为你详细介绍安卓APP开发的原理、
2023-04-28
安卓app开发要多久
安卓App开发的时间长短因人而异,涉及到多个因素,包括开发人员的技能水平、项目的要求和复杂性、使用的工具和技术等。一般来说,一个简单的安卓App开发项目,需要多少时间取决于以下因素:1.功能要求:简单的应用程序会比复杂的应用程序开发时间更短。一个仅仅需要显
2023-04-28
安卓app存储收藏功能制作
在安卓应用程序开发中实现存储收藏功能,可以借助于Android提供的SharedPreferences和SQLite数据库两种常用的存储方式来实现。下面分别介绍这两种方式的实现方法:1. 使用SharedPreferences实现存储收藏功能SharedP
2023-04-28
免费安卓版h5制作app
H5制作App是基于H5技术的移动应用开发方式。它采用HTML、CSS、JavaScript等Web前端技术来实现网页应用程序的访问和展示,并利用一些框架和工具将网页应用包装成原生应用,然后可以发布到不同的移动应用市场中。免费的安卓版H5制作App工具有很
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1