IDEA向安卓模拟器SD卡中导入文件

网友投稿 643 2022-10-27

IDEA向安卓模拟器SD卡中导入文件

IDEA向安卓模拟器SD卡中导入文件

​​ <-------个人网站传送门------->​​

个人开发环境:Ubuntu18.04+IDEA2019.1+Android9.0

问题起源,开发一个简单Android播放器去播放SD卡上的视频/音频文件。由于需要将文件复制到模拟器的SD卡上,课本上和网上教程是关于用Eclipse和Android Studio进行开发的,借助DDMS可以轻松实现。可是我用的IDEA找不到打开DDMS的地方,网上也没找到啥有用的信息。

这里简单归纳下解决办法:

思路:找到自己安装Android SDK的路径,进入其下的tools文件夹,用终端打开并输入montior 回车(也可直接用终端定位到此目录执行monitor),此时发现DDMS已正常启动,可以进行向SD卡导入文件的操作。(需要提前开启安卓虚拟机AVD)

注意:模拟器SD卡目录为mnt文件夹下的sdcard,选中这里点右上角的导入按钮即可向SD卡导入所需文件。

我发现导入后的文件这里好像并不能在sdcard下面看到,不过只要导入过程中控制台没有错误提醒,即说明导入成功。(也可以在安卓模拟器自带的文件管理应用中进行查看)

文件导入成功,剩下便是在代码中的引用了。

这里谈下关于文件路径的设置及访问权限的获取。

path = "/sdcard/Movies/sample.3gp";

mMediaPlayer.setDataSource(path);// 设置数据

path值只需要填写为“/sdcard/所在文件夹/所在文件”即可。

运行项目发现还是不行,获取数据源出错。一开始以为是path设置的路径有误,后面发现是忘记加访问权限了。

在AndroidManifest.xml文件的标签之前加入下面两句获取访问权限的代码

此时如果运行项目还是会出现如下情况,很明显的错误提醒,没有访问权限。

可是前面不是刚加了访问权限嘛,怎么还提示没有。

仔细看书才发现是Android版本的问题,在Android6.0以后的版本加了新的保护权限,需要 动态获取权限。

代码如下:

private void setRegist() //动态获取权限{ //android 6.0新特性,一些保护权限, //如,文件读写除了要在AndroidManifest中申明权限,还需要进行动态获取if(Build.VERSION.SDK_INT>=23){//大于23指android6.0以后的版本。 int REQUEST_CODE_CONTACT=101; final int REQUEST_EXTERNAL_STORAGE=1; String[] PERMISSIONS_STORAGE = { "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE"}; //验证是否许可权限for(String str:PERMISSIONS_STORAGE){ if(this.checkSelfPermission(str)!= PackageManager.PERMISSION_GRANTED) { this.requestPermissions(PERMISSIONS_STORAGE, REQUEST_CODE_CONTACT); return; } } } }

上述方法写在MainActivity中即可,在onCreate方法中调用即可。

这样在运行时会弹出如下的权限请求,ALLOW即可。

机智的解决上述问题,除了动态请求权限。也可以打开模拟器的设置,在里面找到APP相关设置,然后给予该APP访问权限。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:go-tigertonic:一个构建JSON web服务的Go框架
下一篇:Linux下安装CodeBlocks和gcc
相关文章

 发表评论

暂时没有评论,来抢沙发吧~