Giter Site home page Giter Site logo

androidqstorage's Introduction

AndroidQStorageSample

是什么?

本项目是,在当前Android Q即将大规模普及的情况下,适配Android Q对存储权限做出的调整,而进行的一个实战项目。

项目中对文件的操作全部基于Uri对象和AndroidX的DocumentFile库,为大家演示Android Q通过Storage Access Framework如何操作私有目录和公共目录。

主要功能包括,

  • 对Android Q 存储权限的获取
  • 校验一个Uri是否有效
  • 如何保存、获取MediaStore内容
  • 如何通过SAF获取文件/文件夹的Uri
  • 如何通过SAF传入Uri对文件进行操作

为什么?

作为Android的开发者,大家应该对早年Android手机被人抱怨卡顿、手机存储空间被应用占用、文件被毒瘤应用监听篡改等诸多问题。很多Android开发者自己都不愿意使用Android手机(尊重个人爱好)。

现在生态在一步一步的变好,Google对文件管理方面一步一步的收紧权限,对用户来说,无疑是一个好消息。

不过,开发者就需要辛苦跟进步伐。但是,换个角度想,如果Android生态因此受益,作为Android开发者,是不是减少“原生开发没人要了”的疑惑呢?

这个项目,是在升级兼容下,把一个比较通用,常用的操作,给大家演示出来,希望能帮到大家减少升级兼容的工作量。

怎么做?

除了对文件的操作,通过导入了androidx的DocumentFile库,传入uri来进行,快捷操作,其他的都是依赖于Android SDK内自带的API。

如果不访问公共目录(非MediaStore),只需要关注PublicDirActivity页面。

操作公共目录的代码,主要在SAFOperateActivity页面。

下面是演示APP操作的GIF,希望能帮到大家。

校验Uri和保存到MediaStore:

校验Uri和保存到MediaStore

读取MediaStore:

读取MediaStore

通过SAF创建文件:

通过SAF创建文件

通过SAF删除文件(演示中,为了明显,通过SAF选择文件后在删除,实际操作中,可以传入自己查询到的Uri):

通过SAF删除

通过SAF查找文件或者文件夹Uri:

通过SAF查找Uri

androidqstorage's People

Contributors

zengcanxiang avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.