首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mkdir不能在Android P上运行,同样的代码要到7.0才能运行

问题:为什么mkdir不能在Android P上运行,同样的代码要到7.0才能运行?

答案:在Android P(Android 9.0)版本中,Google引入了更严格的安全策略,其中包括对应用程序的文件系统访问进行了限制。这导致了一些旧版本的代码在Android P上无法正常运行。

在Android 7.0及更早的版本中,应用程序默认具有对外部存储设备(如SD卡)的写入权限。因此,使用mkdir命令创建目录是被允许的。

然而,在Android P中,应用程序默认不再具有对外部存储设备的写入权限。相反,应用程序只能在其私有目录下进行文件操作。这是为了增强用户数据的安全性和隐私保护。

要在Android P上创建目录,开发者需要使用特定的API来请求运行时权限,并且只能在应用程序的私有目录下进行操作。以下是在Android P上创建目录的示例代码:

代码语言:txt
复制
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
    File directory = new File(getExternalFilesDir(null), "DirectoryName");
    if (!directory.exists()) {
        directory.mkdir();
    }
}

上述代码首先检查设备的Android版本是否为Android P或更高版本。然后,它使用getExternalFilesDir()方法获取应用程序的私有目录,并在其中创建一个名为"DirectoryName"的目录。

需要注意的是,上述代码只是一个示例,实际应用中应根据具体需求进行适当的修改和处理。

推荐的腾讯云相关产品:腾讯云移动开发平台(https://cloud.tencent.com/product/mwp)

腾讯云移动开发平台提供了丰富的移动开发解决方案,包括移动应用开发、移动后端云服务、移动测试等。它可以帮助开发者快速构建高质量的移动应用,并提供稳定可靠的后端云服务支持。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

浅谈 Android 7.0 多窗口分屏模式实现

Android 7.0 添加了对同时显示多个 APP 支持。在手持设备,两个 APP 可以在分屏模式下并排运行。...嗯,大概就是这样: 分屏模式适配 我们如何才能让自己 APP 支持分屏模式呢?...该属性默认值是true ,也就是说,如果设置该属性,在支持分屏设备,默认是可以分屏。 若项目的targetSDKVersion 小于24,那么运行在支持分屏设备,默认可以分屏。...分屏模式监听 能不能在代码中监听 APP 是否进入分屏模式呢?答案是能。...到此这篇关于浅谈 Android 7.0 多窗口分屏模式实现文章就介绍到这了,更多相关Android7.0 多窗口分屏内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持

2.5K31

JOOX Music & targetversion25 爬坑指南

查了各种资料,总算知道升级TV到25需要注意地方了: 权限问题 JOOX本身是TV 21,但是Google从Android 6.0开始区分正常权限和危险权限,而危险权限需要App向用户申请授予才能使用...NDK库的话,对于API 23以上级别(即TV >= 23)会导致应用Crash,不过低于改级别的运行7.0系统手机上也会有相关弹窗警告。...当晚正准备提测,为了确认DTS音效在升级之后是否正常,卸掉App之后重装,结果一运行就Crash了...Crash了(┬_┬)。然后自己手动打开权限后就可以正常运行,初步确认问题出在权限获取子进程。...最主要是,debug包能够正常运行,而release包不行...经过不断反复查看打印log之后,发现了一条重要线索: 为什么说是重要线索?因为代码里面有调用到启动Home逻辑。...P.S.

3.5K10

C4droid8.0汉化版下载

cpp20部分特性 修复了光标遇到括号乱跳问题 7.00,6.97,6.95 添加了Android 9支持 添加了SFML,FLTK和Allegro图形库 添加了C++类成员代码补全 添加了CMake支持.../configure编译库会出现mkdir /temp/xxx 没有此目录错误,蜜汁bug,怎么能在根目录下直接读写文件呢(起码也要挂载读写分区)。...Q:安装,安装失败签名错误等 A:卸载原版和插件,建议使用一键卸载c4droid工具卸载,共存版安装请加QQ 2....导出应用问题 Q:导出失败 A:检查文件名是否合法,检查资源路径是否合法,检查代码是否可以运行 Q:导出包,解析失败无法安装 A:导出时是否使用了中文(全角)字符包名,必须使用英文...A:设置->代码补全 ps:调整编辑器字体和调整终端字体是两个不同概念不要混淆,前者是写代码字体,后者是运行字体 7.

1.2K80

Android兼容Java 8语法特性原理分析

特别是吸收了运行在JVMScala、Groovy等动态脚本语言特性之后,Java 8在语言表达力、简洁性两个方面有了很大提高。...在运行时, 通过引导方法BootstrapMethod机制动态确定方法所属者和类型。这一特点也非常契合动态类型语言只有在运行期间才能确定类型特征。...Android不能直接支持 回到Android系统,Java-Bytecode(JVM字节码)是不能直接运行Android系统,需要转换成Android-Bytecode(Dalvik/ART...同样,将实例中J8Sample.java放到支持D8Android工程中: ? 同样,AndroidStudio -> Build -> make project编译之后: ?...Java8新增许多API(例如:新DataAPI),就D8编译器而言,只有在Android P(9.0)版本中能直接运行。低于9.0就不行了。如何能够全版本支持Java 8。

82621

Android开发笔记(一百六十七)Android8.0画中画模式

前面的博文《Android开发笔记(一百五十九)Android7.0分屏模式》介绍了Android7.0多窗口特性,但是这个分屏区域是固定,要么在屏幕上半部分...应用一旦进入画中画模式,就会缩小为屏幕一个小窗口,该窗口可拖动可调整大小,非常适合用来播放视频。那么如何才能让App支持画中画呢?接下来将对画中画开发工作进行详细介绍。...对于视频播放页面,Activity代码同样不在onPause方法中暂停播放视频,而应当在onStop方法中暂停播放,并在onStart方法中恢复播放视频。 3....按下任务键并点击“分屏模式”按钮,接着把App拖到分屏区域,即可实现分屏模式切换。然而系统却没提供“画中画模式”之类按钮,就无法在桌面把应用拖入画中画,只能在App内部通过代码切到画中画模式。...(builder.build()); } 运行测试App,打开视频文件开始播放,此时播放界面如下图所示。

2.2K30

Android兼容Java 8语法特性原理分析

特别是吸收了运行在JVMScala、Groovy等动态脚本语言特性之后,Java 8在语言表达力、简洁性两个方面有了很大提高。...在运行时, 通过引导方法BootstrapMethod机制动态确定方法所属者和类型。这一特点也非常契合动态类型语言只有在运行期间才能确定类型特征。...Android不能直接支持 回到Android系统,Java-Bytecode(JVM字节码)是不能直接运行Android系统,需要转换成Android-Bytecode(Dalvik/ART...同样,将实例中J8Sample.java放到支持D8Android工程中: ? 同样,AndroidStudio -> Build -> make project编译之后: ?...Java8新增许多API(例如:新DataAPI),就D8编译器而言,只有在Android P(9.0)版本中能直接运行。低于9.0就不行了。如何能够全版本支持Java 8。

88110

小米手机安装 charles 证书,提示“没有可安装证书”

https数据一直显示unknown 当你发现这个问题时候,就不要再费力去设置charles以及换各种姿势去装证书了,这些都是徒劳,因为从Android 7.0开始系统默认不信任用户证书,因此即时你安装成功...目前腾讯对微信权限管很严,小程序在模拟器无法使用是普遍现象 安卓版本7+并且微信版本7+ 使用Charles也不能代理请求怎么办?...问题原因: 1.在Android7.0及以上系统中,每个应用可以定义自己可信CA集集。 默认情况下,应用只会信任系统预装CA证书,而不会信任用户安装CA证书。...第四种解决方案:用别的抓包工具 VirtualApp + HttpCanary HttpCanary是一款强大Android端抓包和注入工具,同样不需要root,软件本身支持安装证书,如果只是单独使用...,依然跟其他APP一样; 这里还要介绍另外一个产品,VirtualApp是一个开源Android App虚拟化引擎,允许在其中创建虚拟空间,并在这个虚拟空间中运行其他应用。

14.2K30

QQ音乐Android编译提速之路

以QQ音乐为例,Android工程代码量达到120万行以上,每修改一行代码,都要等待4分钟以上才能在手机上看到改动效果。 为了应对这个问题,我们自研推出了一款增量编译组件。...随后资源索引类会跟随工程所有代码文件,一起被编译为字节码文件,字节码文件还需要被进一步编译为Dex文件,这样才能Android虚拟机所识别。...另一个就是阿里推出Freeline方案了,它可以充分利用缓存文件,在几秒钟内迅速地对代码改动进行编译并部署到设备,提速效果十分明显。不过它同样存在着一些不可忽视问题。...类改动生效问题处理 在第一个版本发布后,我们收到同事反馈,在Android 7.0或者更高版本系统,会偶现代码改动生效问题。...经过分析,可以确保增量代码是编译成功,问题是出现在运行时类加载阶段。 这是由于从Android 7.0开始,虚拟机代码编译策略,发生了变化。

3.6K71

Android应用ANR分析

如果APP运行在前台,系统就会弹出一个提示框,告知用户,用户可以选择继续等待或者强制关掉。 ANR原因 ANR是因为负责更新UI主线程无法处理用户输入事件或绘制操作,而导致糟糕体验。...BroadcastReceiver不能在10秒内结束接收到任务。 ANR触发场景 在主线程执行耗时IO操作。 在主线程执行耗时计算。...在主线程与其他进程进行同步binder调用,并且另一个进程需要很长时间才能返回。 主线程因等待其他线程同步锁( synchronized)而被长时间阻塞。 主线程与另一个线程处于死锁状态。...TraceView 使用Traceview去跟踪正在运行应用,并定位主线程忙碌位置。 分析traces日志文件 当发生ANR,Android系统会存储日志文件。...“,不然这个线程仍然会使得你应用显得卡顿,因为这个线程默认与UI线程有着同样优先级。

90440

Android应用ANR分析

如果APP运行在前台,系统就会弹出一个提示框,告知用户,用户可以选择继续等待或者强制关掉。 ANR原因 ANR是因为负责更新UI主线程无法处理用户输入事件或绘制操作,而导致糟糕体验。...BroadcastReceiver不能在10秒内结束接收到任务。 ANR触发场景 在主线程执行耗时IO操作。 在主线程执行耗时计算。...在主线程与其他进程进行同步binder调用,并且另一个进程需要很长时间才能返回。 主线程因等待其他线程同步锁( synchronized)而被长时间阻塞。 主线程与另一个线程处于死锁状态。...TraceView 使用Traceview去跟踪正在运行应用,并定位主线程忙碌位置。 分析traces日志文件 当发生ANR,Android系统会存储日志文件。...“,不然这个线程仍然会使得你应用显得卡顿,因为这个线程默认与UI线程有着同样优先级。

1.1K20

Android 编译Android7.0版本源码

编译Android7.0版本源码 前言   首先说说为什么要编译Android7.0源码,因为当我们去做系统定制开发时候,就需要这么去做,举个例子,你们公司有一个客户是做电视机顶盒,现在购买了你们公司产品...,要求你们公司提供相关Android系统驱动,类似音频驱动、视频驱动之类文件,能让这个文件再客户机顶盒正常使用,针对这个问题我们要怎么做呢?...下载Repo 到这里,我们下载Repo,打开UbuntuTerminal(终端),首先在根目录下创建一个bin目录,输入命令: mkdir ~/bin 然后添加路径,输入命令: PATH=~/bin...和Android10两个版本代码,那么我们可以在ubuntu根目录下创建一个Project文件夹,输入命令: mkdir Project 回车即可创建文件夹,然后进入到Project文件夹下,输入命令...① Jack-Server   Jack编译器工具是一套新Android编译工具用来将Java代码转换为Android dex字节代码,你下载7.0源码中有这个工具,切换工程根目录,输入以下命令查看当前是否有服务启动

34540

写在 Laravel 5.5 发布之前

Q: 怎样才能在 Laravel 5.5 发布后最快得到通知?...虽然 Laravel 5.5 要到 2017年7月 才正式发布,目前还有一段时间。...但是现在已经可以着手准备进行服务器 PHP 版本升级了,如果使用了原生 MySQL扩展,在升级到PHP 7.0 之前建议先切换到 pdo-MySQL 或者 MySQLi 来实现 MySQL 数据库连接和查询...PHP 7.0 除了引入一系列新开发特性,还大大提升了性能,Tumblr 和 wordpress 在切换到 PHP 7 之后都证实了这一点,本站也很早就运行在 PHP 7 以上环境下,性能提升确实非常明显...如果你代码库还没有开始向 PHP 7 转化,可以参考 PHP 官方团队提供迁移文档,文档中包含了进行代码迁移之前所有需要注意内容。

1.9K40

简洁优雅地实现夜间模式

夜间模式作为APP一个重要用户体验之一,很多应用有这个功能,目前,用户体验也是产品和设计较为看重方面,越来越值得深入探究,本文将介绍在Android一种夜间模式实现方式。 ?...前言 Android 6.0 Marshmallow 预览版中曾经短暂出现过相关夜间模式功能,只是在正式版中被移除了,在Android 7.0 Nougat,用户们再次经历了「得而复失」遗憾,在开发者预览版中...如何开启这项功能,可以参考少数派这一篇文章,帮你找回 Android 7.0 夜间模式 2 款应用(https://sspai.com/post/35273)。...效果和代码 代码 https://github.com/TonnyL/PaperPlane 运行效果 ?...在Android 6.0及以下设备,本项目运行时会有切换过渡动画效果,但是不支持Android 7.0及以上设备。

1.6K30

Android 7.0 PopupWindow 又引入新问题,Google工程师也不够仔细么

Android7.0 PopupWindow兼容问题 Android7.0 中对 PopupWindow 这个常用控件又做了一些改动,修复了以前遗留一些问题同时貌似又引入了一些问题,本文通过在...7.0设备实测并且结合源码分析,带你了解关于 PopupWindow 相关改动。...Android7.0 中下面两个问题解决了,这里强调一下,不是说从 Android7.0 开始才解决这两个问题,因为具体版本细节没去深究。可能在其他某些版本下面的问题也是被解决了。...Android7.0设置背景也是可以,那么它代码肯定做了处理。...关于这个问题还有篇文章可以参考, http://www.jianshu.com/p/0df10893bf5b Android7.0 PopupWindow其他改动点,与Android5.1对比 主界面

1.2K100

Anbox安装apk失败(提示Failure res=-113等)解决方法

---- 具体安装和配置流程如下(机器翻译): Anbox或Box中Android是一个免费开源工具,允许在Linux运行Android应用程序。...它工作原理是在LXC容器中运行Android运行时环境,重新创建Android目录结构作为可安装循环映像,同时使用本机Linux内核来执行应用程序。...在使用它之前,我想明确指出,即使在集成libhoudini用于ARM支持之后,并非所有Android应用程序和游戏都能在Anbox中运行。...Box安装中自动下载并安装Android PlayGoogle Play商店(和Google Play服务)和libhoudini(用于ARM应用/游戏支持)。...警告:永远不要在不知道它做什么情况下运行你没写过脚本。在运行此脚本之前,请查看其代码

7.7K2116

appium+python自动化36-android7.0问题

前言 由于最近很多android手机升级到7.0系统了,有些小伙伴appium版本用还是1.4版本,在运行android7.0app自动化时候遇到无法启动问题:WebDriverException...: Message: A new session could not be created 我电脑环境: python 3.6 android 7.0 appium 1.4.13 android7.0...3.也就是说appium1.4支持最高android版本是6.0,查下资料可以知道android7.0需使用appium1.6.3以上版本才能支持。...版本是可以共存,所有不需要卸载之前版本,重新打开appium1.7版本,运行代码 4.重新运行时候发现报这个错,从报错信息看是手机上安装unlock版本不匹配(因为之前运行appium1.4版本有残留...Original error: 'Command 'D\:\\soft\\Android\\platform-tools\\adb.exe -P 5037 -s A5RNW18316011440 install

1.6K82

Android】Broadcasts详解

广播消息封装在一个Intent对象中,其中action属性标识事件类型(比如android.intent.action.AIRPLANE_MODE),可能在intent附件字段还包含了附加信息...系统广播变化 Android 7.0或更高版本不再发送下列系统广播,这项优化会影响所有的应用程序,而不只是那些针对Android 7.0开发程序。...比如,当一个进程执行一个广播接收器(执行onReceive()方法中代码),它会被当作一个前台进程。除非内存极度匮乏,否则系统会一直让该进程运行。...广播接收器无法捕捉到用来启动Activityintent;同样地,当你广播一个intent,你也无法启动一个Activity。...只有应用在应用清单中申请了那个权限,其中receiver才能接收到广播。

72620
领券