针对api高版本file访问权限问题

2019-03-04  本文已影响0人  sunQianone

if (Build.VERSION.SDK_INT >=18) {

StrictMode.VmPolicy.Builder builder =new StrictMode.VmPolicy.Builder();

    StrictMode.detectFileUriExposure(builder.build());

}

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()//线程策略(ThreadPolicy)

                    .detectDiskReads()//检测在UI线程读磁盘操作

                    .detectDiskWrites()//检测UI线程写磁盘操作

                    .detectCustomSlowCalls()//发现UI线程调用的哪些方法执行得比较慢

                    .detectResourceMismatches()//最低版本为API23  发现资源不匹配

                    .detectNetwork() //检测在UI线程执行网络操作

                    .penaltyDialog()//一旦检测到弹出Dialog

                    .penaltyDeath()//一旦检测到应用就会崩溃

                    .penaltyFlashScreen()//一旦检测到应用将闪屏退出 有的设备不支持

                    .penaltyDeathOnNetwork()//一旦检测到应用就会崩溃

                    .penaltyDropBox()//一旦检测到将信息存到DropBox文件夹中 data/system/dropbox

                    .penaltyLog()//一旦检测到将信息以LogCat的形式打印出来

                    .permitDiskReads()//允许UI线程在磁盘上读操作

                    .build());

            StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()//虚拟机策略(VmPolicy)

                    .detectActivityLeaks()//最低版本API11 用户检查 Activity 的内存泄露情况

                    .detectCleartextNetwork()//最低版本为API23  检测明文的网络

                    .detectFileUriExposure()//最低版本为API18  检测file://或者是content://

                    .detectLeakedClosableObjects()//最低版本API11  资源没有正确关闭时触发

                    .detectLeakedRegistrationObjects()//最低版本API16  BroadcastReceiver、ServiceConnection是否被释放

                    .detectLeakedSqlLiteObjects()//最低版本API9  资源没有正确关闭时回触发

                    .setClassInstanceLimit(MyClass.class, 2)//设置某个类的同时处于内存中的实例上限,可以协助检查内存泄露

                    .penaltyLog()//与上面的一致

                    .penaltyDeath()

                    .build());

上一篇下一篇

猜你喜欢

热点阅读