`
Anloney
  • 浏览: 7763 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Android开发之sd卡存储和机身存储的路径获取

 
阅读更多

 

  

   开发过程中碰到将文件存储到手机中时,要先判断是否有sd卡,如下所示

// 判断是否有SD卡
	private static boolean ExistSDCard() {
		if (android.os.Environment.getExternalStorageState().equals(
				android.os.Environment.MEDIA_MOUNTED)) {
			return true;
		} else
			return false;
	}

 如果存在,则要获取sd卡的根目录路径,在目录下创建新的文件夹,sd卡根目录路径如下:

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 获取内外置存储卡

    本文将深入探讨如何在Android平台上获取内外置存储卡的相关信息,包括路径、判断其是否存在以及如何加载SD卡。 首先,我们要了解Android设备的存储结构。Android系统通常包含两种类型的存储:内部存储(Internal ...

    Android获取外置SD卡路径

    在Android系统中,由于安全和隐私的考虑,访问外部存储(即外置SD卡)的权限在不同的Android版本中有着不同的处理方式。在早期版本中,应用可以相对自由地访问外部存储,但在Android 6.0(API级别23)及更高版本中,...

    android 获取外置SD卡路径

    来获取内置SD卡的路径,但是每款定制过的android 系统的外置SD卡的路径都不一样,那我们怎么才能去获取这个路径呢,我们可以想其它的办法,我这里提供了一个类可以获取外置SD卡或内置SD卡的 label(名称),path(路径)...

    android 读取外置和内置存储卡路径和大小

    在Android系统中,读取外置和内置存储卡的路径以及获取它们的大小是常见的需求,尤其是在处理多媒体文件或者管理应用程序数据时。本教程将详细解释如何实现这一功能。 首先,我们要了解Android对存储卡的分类。在...

    Android 通过反射调用获取内置存储和外置sd卡根路径(适用于各个版本)

    本篇文章将深入探讨如何在Android应用中通过反射调用来获取内置存储和外置SD卡的根路径,同时确保这些方法适用于不同版本的Android系统。 首先,了解Android对存储的划分。Android系统通常将存储分为两个主要部分:...

    android通过反射获取内置存储、SD、OTG盘的路径,适合三方apk存储查看与文件管理

    总之,通过反射机制,开发者可以在不依赖特定厂商实现的情况下,获取并管理Android设备上的各种存储路径,包括内置存储、SD卡和OTG设备,同时获取到它们的空间信息,以适应不同的设备环境。在`MountRootManagerRf....

    Android 获取OTG U盘路径 sdcard路径

    在Android系统中,获取OTG(On-The-Go)U盘的路径以及内部或外部SD卡的路径是进行文件操作的基础。这篇详细解释将围绕如何在Android M及以上版本的设备上实现这一功能,并提供一个简单实用的代码示例。 首先,我们...

    android 内部存储读写 sd卡存储

    本篇文章将主要探讨Android中的内部存储与外部存储之一——SD卡存储的基本概念、特点及其使用方法。 #### 二、Android内部存储 Android内部存储指的是应用自身的私有存储空间,通常位于`/data/data/<package name>...

    Unity应用获取外置SD卡路径方法

    在Android 6.0(API级别23)及更高版本中,系统对存储访问进行了权限管理,因此获取外置SD卡路径前,需要确保在`AndroidManifest.xml`中添加了相应的权限: ```xml <uses-permission android:name="android....

    Android开发之系统信息【1】——获取Android手机中SD卡存储信息

    在Android开发中,获取SD卡存储信息是相当重要的一个功能,尤其对于需要管理大量数据的应用来说。本篇文章将详细介绍如何在Android系统中获取SD卡的内存容量和剩余空间。 首先,为了能够访问SD卡,我们需要在...

    获取SD卡 TF卡 内置 外置存储卡路径例子

    在Android系统中,获取SD卡或TF卡(外部存储卡)以及内置存储卡的路径是开发者经常遇到的任务,尤其在处理文件操作时。本示例提供了优化的方法,以提高读取速度,这对于处理大量数据或者频繁访问存储卡的应用至关...

    Android TV USB路径或手机SDCARD路径获取

    自Android 4.4(KitKat)版本开始,引入了“可卸载的存储”概念,允许用户像插入和移除SD卡一样处理USB设备。这使得开发者需要更加注意如何正确地访问这些路径。 对于SDCARD路径,Android提供了多种方法来获取内部...

    获取SD卡路径及手机存储路径

    Android设备通常有两种类型的存储空间:内部存储(Internal Storage)和外部存储(External Storage),通常所说的SD卡就是外部存储的一部分。在Android 6.0(API级别23)之后,对存储访问有了更严格的权限管理,...

    android demo,sd卡文件存储和data下文件存储。

    在使用SD卡存储时,需要注意权限问题。自Android 6.0(API级别23)以来,应用需要在运行时请求`WRITE_EXTERNAL_STORAGE`和`READ_EXTERNAL_STORAGE`权限。 **2. data下文件存储** 内部data目录下的文件存储主要用于...

    android 读取和存储sd卡

    在Android系统中,读取和存储SD卡是应用程序与外部存储交互的重要部分,尤其是在处理大量数据或者需要离线可用内容时。本示例项目“StorageManageDemo”将帮助开发者了解如何在Android应用中有效地实现这一功能。...

    Android 开发之 SD卡的使用.zip

    在Android开发中,SD卡(Secure Digital Card)的使用是一个重要的环节,特别是在处理大量数据、媒体文件或扩展应用程序存储时。本项目源码提供了一种实际应用中的示例,帮助开发者理解和掌握Android如何与外部存储...

    Android获取SD卡中选中图片的路径(URL)

    在Android开发中,获取SD卡上用户选择的图片路径是一个常见的需求,这通常涉及到与系统的媒体库交互,以便用户能够从相册中选取图片。以下将详细介绍如何实现这个功能。 首先,我们需要添加必要的权限到...

    Android开发WebView获取SD卡图片并显示

    从KitKat开始,Android为了增强安全性和隐私保护,引入了"存储访问框架"(Storage Access Framework,简称SAF),使得直接访问外部存储(如SD卡)的权限变得更加严格。因此,传统的File://协议在WebView中加载SD卡...

    Android 获取内外SD卡路径几种方法总结

    在Android开发中,获取SD卡路径是常见的需求,尤其是在处理文件操作时。本文将总结两种在Android系统中获取内外SD卡路径的方法。 首先,我们来看第一种方法,这是较为简单直接的方式,通常适用于大部分场景: 1. *...

    安卓SD卡文件管理更新信息相关-android读取外置和内置存储卡路径和大小.rar

    在Android系统中,管理和操作文件,尤其是涉及到SD卡(外置和内置存储卡)的文件操作,是开发者经常面临的一项任务。这篇资料主要探讨的是如何在Android应用中获取SD卡的路径以及计算其存储大小。以下是一些关键知识...

Global site tag (gtag.js) - Google Analytics