外部私有存储位于/storage/emulated/0/Android/data/包名这个目录下,它和内部存储一样是私有的,并且其他应用程序是无法访问的,会随着应用程序的卸载而被清除。 ...2.使用哪些api进行访问? ...context.getExternalCacheDir() // /storage/emulated/0/Android/data//cache 外部公有存储: Environment.getExternalStorageDirectory...() Environment.getExternalStoragePublicDirectory(String type) 参数type用于指定文件夹的类型,可以有以下取值:(getExternalFilesDir...注:在Android10之后,不能再使用外部公有存储下的两个方法了,应用程序只能访问自己的外部私有目录,所以Android10之后尽量使用外部私有存储下的两个方法。
checkSelfPermission()方法用于检查权限,requestPermissions() 方法用于请求权限。...这一点其实就是限制了在应用间共享文件,如果需要在应用间共享,需要授予要访问的URI临时访问权限,我们要做的就是注册FileProvider: 1)声明FileProvider。...--androidx版本类路径为:androidx.core.content.FileProvider--> 2)编写xml文件,确定可访问的目录 <paths xmlns:android="http...如果需要关闭这个功能可以配置: android:requestLegacyExternalStorage="true" 分区存储下,访问文件的方法: 1)应用专属目录 //分区存储空间 val file...你一定很奇怪,为什么Android11的适配就这么草草收尾了?
support-v4、appcompat-v7库也不再支持那么久远的系统了,但是它们的名字却一直保留了下来,虽然它们现在的实际作用已经对不上当初命名的原因了。...MediaStore API在共享目录指定目录下创建文件或者访问应用自己创建文件,不需要申请存储权限 MediaStore API访问其他应用在共享目录创建的媒体文件(图片、音频、视频), 需要申请存储权限...2.4 兼容模式 应用未完成外部存储适配工作,可以临时以兼容模式运行, 兼容模式下应用申请存储权限,即可拥有外部存储完整目录访问权限,通过Android10之前文件访问方式运行,以下两种方法设置应用以兼容模式运行...: 1)文件迁移 文件迁移是将应用共享目录文件迁移到应用私有目录或者Android10要求的media集合目录。...允许其他应用访问,并且应用卸载后不允许删除的文件,文件需要存储在共享目录,应用可以选择是否进行目录整改,将文件迁移到Android10要求的media集合目录。
base-config cleartextTrafficPermitted="true" /> 然后打开network模块的AndroidManifest.xml,在该文件的...1、Android10默认开启沙箱模式,即使已经动态申请了存储卡读写权限,在外部存储上读写文件仍然失败。...方法设置为true。...在Android10及以下版本,该值默认为true,但从Android11开始该值默认为false。 设置代码示例如下: // 设置是否允许访问文件,如WebView访问存储卡的文件。...// 不过assets与res文件不受此限制,仍然可以通过“file:///android_asset”和“file:///android_res”访问 // Android11开始该值默认为false
LinearLayout可以直接访问FrameLayout和RelativeLayout,因为他们都是LinearLayout的子view,同样的RelativeLayout可以直接访问Button。...为什么说viewRootImpl是事件分发的起点?viewRootImpl如何对触摸信息进行分发处理的?这是我们接下来要讨论的。 触摸信息是如何到达viewRootImpl的?...DecorView重写了该方法,逻辑比较简单,仅仅做了一个判断: DecorView.java api29 public boolean dispatchTouchEvent(MotionEvent ev...同理,在Dialog的布局界面中,会分发给实现了callBack接口的Dialog。...看到DecorView的方法: DecorView.java api29 public boolean superDispatchTouchEvent(MotionEvent event) {
背景 最近在项目中着手做Android10和Android11 适配时候,期间遇到了不少的坑。之前有专门写过qq、微信分享的适配。但是此次在针对偏业务侧适配工作的时候还是碰到了一些新的问题。...在以上的场景中,涉及到了这些关键点: 把图片存储到sd卡 把绝对路径path传递给qq或者微信 1.1 直接访问sd卡的根目录 通过FileOutPutStream来完成,在Android10以下都没问题...在Android10 上公共目录下的图片无法通过file:// 格式去访问,提示找不到路径。如glide加载、图片选择库、裁剪框架等等都会收到影响。...但是,这里有个坑: 在Android10上不行,在Android11上又可以!!为什么? 因为Google改回来了,让Android11支持file://格式了。。。。 (wtf?...三、终极适配方案 在Android10上 开启标志位 :android:requestLegacyExternalStorage="true"来开启兼容模式,关闭分区适配,相当于targetSdkVersion
Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { if (TAKEPAHTO == 1) {//如果是7.0的拍照 //开启临时访问的读和写权限...// 比如如果图片来源于网络,就可以使用decodeStream方法; // 如果是sd卡里面的图片,就可以选择decodeFile方法; // 如果是资源文件里面的图片...outMimeType = options.outMimeType; options.inJustDecodeBounds = false; //inSampleSize的作用就是可以把图片的长短缩小...image.png 为什么要这么写呢?...因此,在分享私有文件时必须使用FileProvider。 那么如果在使用之前的方法就会报错,我们要给程序在manifest文件中加入FileProvider: ?
为什么是暂时呢?因为只要卸载重装,就会失效了。 管理设备存储空间 从 Android 11 开始,使用分区存储模型的应用只能访问自身的应用专用缓存文件。...看到这里也许会产生疑惑,在Android10中不是进行分区存储了么,这么Android11又开始能直接使用文件路径进行访问了。...也许有小伙伴问到既然Android11可以直接使用File API访问媒体文件了,那分区存储这个适配还有必要么?(PS:我知道肯定有必要,但我想知道为什么会有必要?)...在 Android 10 上,作用域存储环境中的应用无法使用文件路径访问文件。为了与此设计保持一致,我们当时弃用了 DATA 列。...而我们在Android10适配的时候又把相关的数据文件迁移到了应用的私有空间也可以通过File API进行文件访问。 最后呢!
同样的,官网也给出了解决方案: 要在应用间共享文件,您应发送一项 content:// URI,并授予 URI 临时访问权限。进行此授权的最简单方式是使用 FileProvider 类。...如需了解有关权限和共享文件的详细信息,请参阅共享文件。...下面我们看下整体的实现步骤,并考虑为什么需要怎么做?...总不能使用文件路径吧,那不是骗自己么~ 所以,需要一个虚拟的路径对文件路径进行映射,所以需要编写个xml文件,通过path以及xml节点确定可访问的目录,通过name属性来映射真实的文件路径。...,在该方法内部,会调用intent.migrateExtraStreamToClipData();方法。
方法追踪使用流程 : ① 创建 File 对象 : 方法的执行信息 , 将被保存到该 File 文件中 ; File traceFile = new File(Environment.getExternalStorageDirectory...(), "Method_Trace"); ② 开始方法追踪 : 在该方法中 , 需要传入上述 File 文件的绝对路径 , 才能向该 File 文件中保存方法执行信息 ; Debug.startMethodTracing...SD 卡访问权限 : Debug.startMethodTracing(traceFile.getAbsolutePath()) 方法作用是将方法追踪信息写出到 SD 卡的文件中 , 因此这里必须 动态申请...静态声明权限 : 在 AndroidManifest.xml 文件中添加 SD 卡的访问权限 : 最后两个是 SD 卡访问权限 ; 方法之前调用 , 否则开始方法追踪在没有 SD 卡访问权限的情况下执行 , 直接崩溃 ; 3.
其他的文件Uri是file://, 表示这个是一个文件。这个uri是通过Uri.fromFile(File file)方法生成。 Android N 之前,这些uri可以传递到其他应用。...://URI),并授予 URI 临时访问权限。...FileProvider这个类就是把一个文件File,转换为 content://URI的 FileProvider是ContentProvider子类,所以FileProvider的使用方法,和ContentProvider...resource:自定义的xml文件(下面会介绍) 2、在res目录下新建一个xml文件夹,并且新建一个file_paths的xml文件(如下图) 3、打开file_paths.xml文件,添加指定的分享目录...com.google.android.packageinstaller/u0a26} (pid=27107, uid=10026) that is not exported from UID 10004 以下这两个问题,可参考这篇文章 为什么在
,并限制文件混乱的情况,Android Q修改了APP访问外部存储中文件的方法。...在分区存储模型下,SD卡的公共目录是不让访问的,除了共享媒体的那几个文件夹。...无法访问存储设备上的文件 问题原因1: 直接使用路径访问公共目录文件。 问题分析1: 在Android Q上,APP默认只能访问外部存储设备上的App-specific目录。...解决方法1: 参见使用MediaStore访问公共目录和使用SAF选择单个文件,使用MediaStore接口访问公共目录中的多媒体文件,或者使用 SAF访问公共目录中的任意文件。...问题原因2: 使用MediaStore接口访问非多媒体文件。 问题分析2: 在Android Q上,使用MediaStore接口只能访问公共目录中的多媒体文件。
要应用间共享文件,您应发送一项 content:// URI,并授予 URI 临时访问权限。进行此授权的最简单方式是使用 FileProvider 类。...如需了解有关权限和共享文件的详细信息,请参阅 共享文件 FileProvider 实际上是 ContentProvider 的一个子类,它的作用也比较明显,file://Uri 不给用,那么换个 Uri...我们先创建一个名为 res/xml/filepaths.xml 的新文件 ? filepaths.xml 在 filepaths.xml 文件中,便可以指定文件存储的区域和路径。...()/pics 当这么声明以后,代码可以使用你所声明的当前文件夹以及其子文件夹 可能你会有疑问,为什么要写这么个 xml 文件,有啥用呢?...总不能使用文件路径吧,那不是骗自己么 所以,需要一个虚拟的路径对文件路径进行映射,所以需要编写个 xml 文件,通过 path 以及 xml 节点确定可访问的目录,通过 name 属性来映射真实的文件路径
大家肯定注意到标题中Qt后面括号中的minGW,为什么要加上minGW呢?先卖个关子,后面的介绍中会解释的。...HEADERS += testadd.h unix { target.path = /usr/lib INSTALLS += target } 与Linux下相比,去掉了版本号的设置,因为添加上不起作用...生成共享库的效果 由于我们在pro中指定了生成路径,所以生成的文件都在dll文件中。这里面要注意的是,生成的有两个文件,一个是.a文件,在链接过程中使用,另一个是.dll文件,在运行过程中使用。 ?...没有找到这个文件?再一看,后面多了一个d,默默地删掉解决问题。 因为刚才勾选了为debug版本添加’d’作为后缀。。 ②运行直接崩溃 生成库的时候不还有一个文件么,这时候它就该起作用了。...所以这也是我为什么要在标题中加入MinGW的原因了。另外,使用MinGW的工程也可以直接链接.lib文件,这个就之后再了解了。 ? 欢迎大家关注公众号:Pou光明
/****************2016年5月4日 更新*****************************/ 知乎:为什么很多Android应用要把文件写到/sdcard目录下而不是写到/data...Android本身提供了/data/data/com.companyname.appname/这个路径供广大app存放configuration以及user data之类的东西,为什么很多App要把配置文件甚至...(Permission denied) 在清单文件中添加权限 android.primission.WRITE_EXTERNAL_STORAGE 4.0以前的系统读sd卡不需要权限,有很大的安全隐患,...4.0以后的有权限,在设置里面开发者选项,对sd卡进行读写保护。...android.os.Environment; import android.widget.Toast; public class LoginService { /** * 保存用户名和方法的业务方法
这种场景往往更会出现在数据不止存储在salesforce端,还有其他平台有数据的存储或者访问。这种情况下可以使用Streaming API。...Delete操作是否会生成通知,api29以后可用; NotifyForOperationUndelete:UnDelete操作是否会生成通知,api29以后可用; NotifyForOperationUpdate...:Update操作是否会生成通知,api29以后可用; Query:SOQL语句决定了哪些数据符合触发的事件后会发送到渠道。...这些字段有几个需要详细的描述一下: Query:Query在PushTopic的作用不言而喻,定义了哪些数据可以满足条件进行推送。Query语法和SOQL基本相同,但是有一些情况不支持。...如果订阅是在页面或者组件中使用,可以使用Cometd进行操作,Cometd提供了基本方法用来实现客户端订阅操作,详见Cometd API。
在存储文件时,为了保证有充足的存储空间大小,通常需要知道系统内部或者sdcard的剩余存储空间大小,这里就需要用到StatFs类。 1....return totalBlocks * blockSize; } else { return -1; } } 注意: 访问...SDCard进行文件读写时: 在AndroidManifest.xml中加入访问SDCard的权限如下: 在SDCard中创建与删除文件权限 --> 方法: 1:getDataDirectory() 获取到Android中的data数据目录 2:getDownloadCacheDirectory
; 其中quality是从edittext获取的数字,可以从0–100改变,这里出来的log是: 可以看到,图片的大小是没有变的,因为质量压缩不会减少图片的像素,它是在保持像素的前提下改变图片的位深及透明度等...,来达到压缩图片的目的,这也是为什么该方法叫质量压缩方法。...我上面的代码没用过options.inJustDecodeBounds = true;因为我是固定来取样的数据,为什么这个压缩方法叫采样率压缩,是因为配合inJustDecodeBounds,先获取图片的宽...Filter参数作用:如果是放大图片,filter决定是否平滑,如果是缩小图片,filter无影响 1.1.6 总结 以上就是5种图片压缩的方法,这里需要强调,他们的压缩仅仅只是对android...为了计算出一个图片的内存大小,可以将图片当做一个文件来间接计算,用如下的方法: File file = new File(Environment.getExternalStorageDirectory
” 关于分区存储,在Android10就已经推行了,简单的说,就是应用对于文件的读写只能在沙盒环境,也就是属于自己应用的目录里面读写。其他媒体文件可以通过MediaStore进行访问。...但是在android10的时候,Google还是为开发者考虑,留了一手。...已经出来很久了,所以资料还是很多的,这里推荐几篇 访问应用专属文件 Android 10适配要点,作用域存储 AndroidQ(10)分区存储完美适配 说到这里可能又有人问了,那我的应用就是个手机管理器...媒体文件访问权限 ⭐ “为了在保证用户隐私的同时可以更轻松地访问媒体,Android 11 增加了以下功能。执行批量操作和使用直接文件路径和原生库访问文件。...也就是除了 MediaStore API之外还有两种方式可以访问媒体文件: File API。 原生库,例如 fopen()。 那Android10咋办呢??
三篇教程似乎在全新的单元上不起作用。基于他们的要求,我又去重新寻找新的方法。在经过了近20分钟的寻找,我最终找到了一个全新的方法完美解决了问题,请看以下视频。...此处不要直接打开具体练习 ; 在此处点击右键,选择“检查”,当然,也可以按“F12”; 点击跳出来的界面右上角的“Network”; 此时再点击你要做的练习; 本来空着的右侧这时候便会多出一串文件...,我们只需点击“initPage.php”这个文件就好了; 在出现的一串代码中,我们可以看到key这一行,旁边的就是答案; 当做完这一题之后,点击next进入下一个界面是“Netwok”那一栏中又会多出一些文件