一年好景君须记,最是橙黄橘绿时。这篇文章主要讲述Android开发之sd卡存储和机身存储的路径获取相关的知识,希望能为你提供帮助。
来源:https://blog.csdn.net/anjingshuai/article/details/84682779
【Android开发之sd卡存储和机身存储的路径获取】
开发过程中碰到将文件存储到手机中时,要先判断是否有sd卡,如下所示
- // 判断是否有SD卡
- private static boolean ExistSDCard() {
- if (android.os.Environment.getExternalStorageState().equals(
- android.os.Environment.MEDIA_MOUNTED)) {
- return true;
- } else
- return false;
- }
- public static String SDCARDPATH = Environment.getExternalStorageDirectory()
- .getPath();
然后是将要复制的文件写到sd卡下新建的文件夹内,代码如下:
- private void copyzipfileToLocalDir(final String path, final String filename) {
- File file = new File(path);
- if (file.exists()) {
- Uri uri = Uri.fromFile(file);
- Intent intent = new Intent(Intent.ACTION_VIEW, uri);
- intent.setClass(MainActivity.this, TestActivity.class);
- startActivity(intent);
- return;
- }
- pdlog = new ProgressDialog(this);
- pdlog.setMessage("正在复制文件...");
- pdlog.show();
- new Thread() {
- public void run() {
- try {
- InputStream input = getApplicationContext().getAssets()
- .open(filename);
- File f = new File(path);
- if (f.exists()) {
- return;
- }
- File file = f.getParentFile();
- // SDCARD/CN/ZNsql====================path
- if (!file.exists()) {
- file.mkdir();
- }
- FileOutputStream fout = new FileOutputStream(f);
- byte[] buff = new byte[1024];
- int len = 0;
- while ((len = input.read(buff)) > 0) {
- fout.write(buff, 0, len);
- }
- fout.close();
- input.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- handler.sendEmptyMessage(1);
- };
- }.start();
- }
- private Handler handler = new Handler() {
- public void handleMessage(android.os.Message msg) {
- switch (msg.what) {
- case 1:
- if (pdlog != null) {
- if (pdlog.isShowing()) {
- pdlog.cancel();
- }
- ;
- }
- // jump
- File file = new File(SDCARDPATH+ "androidtest.pdf");
- if (file.exists()) {
- Uri uri = Uri.fromFile(file);
- Intent intent = new Intent(Intent.ACTION_VIEW, uri);
- intent.setClass(MainActivity.this, TestActivity.class);
- startActivity(intent);
- }
- break;
- default:
- break;
- }
- };
- };
这样就将assets下的文件写入了外置sd卡,对于一些不支持外置存储卡的Android手机,我们可以将文件写入机身内存,也就是俗称的ROM中,RomPath= Environment.getDataDirectory().getPath(); 当判断到没有外置sd卡时就可以把path换成这个RomPath即可,这样就完成了将文件写入机身内存中。
推荐阅读
- Android/Unity大乱斗-完整双方集成交互指南
- 升级code11.3后遇到React Native启动报错的问题 getCurrentAppState:error 和 objectAtIndexedSubscript: 的解决方案
- 如何在mumu模拟器上联调app并且用Charles抓包
- 1.Android6.0运行时权限简介_2.Android6.0权限适配之WRITE_EXTERNAL_STORAGE(SD卡写入)3_.Android 6.0 运行时权限理解
- Android学习进度一
- openwrt编译 -- 添加用户自定义app
- Android布局样式
- 数据库: Android使用JDBC连接数据库实现增 删 该 查 操作(5.0版本)
- MyBatis mapper记录