uniapp授权位置权限(GPS位置)的例子
#第一次调用定位接口时,会弹窗请求是否授权//获取定位getLocation(){uni.getLocation({...
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开发知识。
苹果手机转apk的过程,实际上是将iOS系统下的应用程序,转换成安卓系统下的应用程序的过程。这个过程并不是简单的复制粘贴,需要通过特定的工具和技术来实现。首先,我们需要了解iOS和安卓系统的应用程序有什么不同之处。iOS系统下的应用程序通常是以.ipa格式打包的,而安卓系统下的应用程序则是以.apk...
随着移动互联网的快速发展,移动应用程序(APP)的开发也变得越来越受欢迎和需求。有些人认为开发一个应用程序是一项艰巨的任务,需要专业的技能。然而事实上,任何人都可以学习和开发自己的应用程序,只需要掌握一些基本知识和技能。APP的开发主要分为三个步骤:前端开发、后端开发和数据库开发。前端涉及用户界面(...
安卓11是Android的最新版本,具有更快的性能和更好的隐私和安全性能。开发者选项是一种在Android设备上启用高级技术的设置,例如USB调试、GPU渲染、布局边界和CPU使用情况等。在本文中,我将详细介绍如何在安卓11上调整开发者选项以获得更好的控制和定制。步骤1:打开“设置”在您的安卓11设...
HTMLApp页面:原理与详细介绍 HTMLApp页面:原理与详细介绍 在互联网领域中,HTML App 页面已成为一种常见且有效的应用程序实现方式。它结合了 HTML、CSS 和 JavaScript 技术,认为开发者提供了一个方便、高效和跨平台的应用程序开发平台。 一、HTML A...