-
android 读取sd卡权限的问题
2020-08-22 14:53:29Android读写sd卡权限问题动态添加权限:”https://www.jianshu.com/p/d349047e6515 添加权限: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission ...Android6.0以上,权限问题
Android读写sd卡权限问题动态添加权限:”https://www.jianshu.com/p/d349047e6515
添加权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
动态添加权限:
if (Build.VERSION.SDK_INT >= 23) { int REQUEST_CODE_PERMISSION_STORAGE = 100; String[] permissions = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; for (String str : permissions) { if (this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) { this.requestPermissions(permissions, REQUEST_CODE_PERMISSION_STORAGE); return; } } }
-
android 读取sd卡中的图片
2015-09-21 20:57:39android 读取sd卡中的图片 一 读取sd卡中的图片 1 获取读取sd的权限 在AndroidMainfest.xml文件中添加 注意:在前添加 2 找到sd卡的目录(以真机的情况说明) /** *图片文件路径 ...android 读取sd卡中的图片
一 读取sd卡中的图片
1 获取读取sd的权限
在AndroidMainfest.xml文件中添加
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ></uses-permission>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" ></uses-permission>
<uses-permission android:name="android.permission.RESTART_PACKAGES" ></uses-permission>
注意:在<application...></application>前添加
2 找到sd卡的目录(以真机的情况说明)
/**
*图片文件路径
*打印Environment.getExternalStorageDirectory()得到:"/mnt/sdcard",即找到了sd卡的根目录
*/
public String filePath=Environment.getExternalStorageDirectory()+"/client/tile/1_0_0.jpg";
3 根据路径获取图片
File mfile=new File(path);
if (mfile.exists()) {//若该文件存在
Bitmap bm = BitmapFactory.decodeFile(path);
return bm;
}
二 注意事项
在读取sd卡中图片的过程中的一些可用判断
1 Environment.getExternalStorageState()获取路径是否成功
/*如获取成功,返回值为MEDIA_MOUNTED*/
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
String filePath=Environment.getExternalStorageDirectory().getPath();
}
2 获取sd卡的权限成功
/*fileName=Environment.getExternalStorageDirectory()+"/client" 是个文件夹目录*/
File f = new File(fileName);
//可读
if(f.canRead())
Log.v("EagleTag","very bad");
//可写
if(f.canWrite())
Log.v("EagleTag","very good");android WebView 控件加载本地sdcard中html文件图片的问题
烦恼了好几天的问题终于解决了
如果用
public void loadData(String data, String mimeType, String encoding)
则会出现html代码中图片路径不对导致不能正常显示图片(通常是一个白色的固定大小的框,或者没有)
当把路径改为绝对路径加上file://都还无法解决
终于,在网上查资料的时候发现了这个函数,正好解决这个问题
public void loadDataWithBaseURL(String baseUrl, String data, String mimeType,String encoding, String historyUrl)
baseUrl是图片的目录,在html代码中就写关于此目录的相对路径就可以了,哇嘎嘎!~
附带代码解释:
String htmlPath = "file:///mnt/sdcard/test/11.html";
String baseUrl = "file:///mnt/sdcard/test/";
webView.loadDataWithBaseURL(baseUrl, data, "text/html", "utf-8", null);
则两个调用都可以显示正常的html网页了,并且前一种可以对针对不同分辨率大小的屏幕做缩放了!!Android中的Environment.getExternalStorageState使用
如果我们想要读取或者向SD卡写入,这时就必须先要判断一个SD卡的状态,否则有可能出错。
那么SD卡状态为什么时才能读取呢,经过我的各种情况的实践,大致如下:SD状态 现象描述/mnt/sdcard目录是否存在canRead返回canWrite返回在/mnt/sdcard创建文件在/mnt/sdcard创建文件夹MEDIA_MOUNTED SD卡正常挂载TRUETRUETRUETRUETRUEMEDIA_REMOVED 无介质TRUEFALSEFALSEfalse: 原因Permission deniedFALSEMEDIA_UNMOUNTED 有介质,未挂载,在系统中删除TRUEFALSEFALSEfalse: 原因Permission deniedFALSEMEDIA_BAD_REMOVAL 介质在挂载前被移除,直接取出SD卡TRUEFALSEFALSEfalse: 原因Permission deniedFALSEMEDIA_CHECKING 正在磁盘检查,刚装上SD卡时TRUEFALSEFALSEfalse: 原因Permission deniedFALSEMEDIA_SHARED SD卡存在但没有挂载,并且通过USB大容量存储共享,操作打开USB存储TRUEFALSEFALSEfalse: 原因Permission deniedFALSEMEDIA_MOUNTED_READ_ONLY sd卡存在并且已挂载,但是挂载方式为只读--无法模拟,SD卡不允许修改权限 MEDIA_NOFS 介质存在但是为空白或用在不支持的文件系统--无法模拟,SD卡格式化后再加载会自动生成系统文件 MEDIA_UNMOUNTABLE 存在SD卡但是不能挂载,例如发生在介质损坏--无法模拟
通过上表可以看出,只有在SD卡状态为MEDIA_MOUNTED时/mnt/sdcard目录才是可读可写,并且可以创建目录及文件。
所以我们读取SD卡时一般会这么写:
010203040506String state;
String path;
state = Environment.getExternalStorageState();
if
(state.equals(Environment.MEDIA_MOUNTED)){
path = Environment.getExternalStorageDirectory().getAbsolutePath();
}
读写SD卡记得加这两个权限:
01
02
<uses-permission android:name=
"android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
/>
<uses-permission android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
* 1 在AndroidManifest文件中加入sdcard操作权限
* <!--在SDCard中创建与删除文件权限 -->
* <uses-permissioandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
* <!--往SDCard写入数据权限 -->
* <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
* 2 确认sdcard的存在
* android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)
* 3 获取扩展存储设备的文件目录
* android.os.Environment.getExternalStorageDirectory(); -
Android 读取sd卡中的图片
2015-01-21 14:59:01一、获取读取SD卡的权限 在SDCard中创建与删除文件权限 --> uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 往SDCard写入数据权限 --> uses-permission android:name=...一、获取读取SD卡的权限
<!--在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <!-- 往SDCard写入数据权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!-- 从SDCard读取数据权限 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
二、找到SD卡的目录
/** * Environment.getExternalStorageDirectory()得到:“、mnt/sdcard” 即找到了sd卡的根目录 */ private String path=Environment.getExternalStorageDirectory()+"client/tile/1.jpg";
三、根据路径获取图片
File mFile=new File(path); //若该文件存在 if (mFile.exists()) { Bitmap bitmap=BitmapFactory.decodeFile(path); return bitmap; }
注意:
在读取sd卡中图片的过程中的一些可用判断
1、获取路径是否成功
/** * Environment.getExternalStorageState()获取路径是否成功 */ if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { String path=Environment.getExternalStorageDirectory().getPath(); }
2、获取SD卡权限成功
private String path=Environment.getExternalStorageDirectory()+"client"; File file=new File(path); if (file.canRead()) { Log.v("TAG", "可读"); } if (file.canWrite()) { Log.v("TAG", "可写"); }
-
Android读取SD卡内容
2015-08-12 14:29:15在做开发的时候遇到一个问题就是需要为用户数据做缓存特别是图片文件缓存,下面就来看看SD卡的读写操作: Android读取手机SD卡内容: ①所需权限: ②判断是否挂载: if (Environment.getExternalStorageState...在做开发的时候遇到一个问题就是需要为用户数据做缓存特别是图片文件缓存,下面就来看看SD卡的读写操作:
Android读取手机SD卡内容:
①所需权限:
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />②判断是否挂载:
③保存文件:if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { Log.i("test", "有SD卡::"+Environment.getExternalStorageDirectory()); }else { Log.i("test", "没有SD卡"); }
④读文件示例:String fileName = "xxxxx"; String dir = "xxx"; File dirFile = new File(dir); if (!dirFile.exists()) { dirFile.mkdirs(); } File file = new File(dir + "/" +fileName); try { file.createNewFile(); OutputStream outputStream = new FileOutputStream(file); //写文件 outputStream.flush(); outputStream.close(); } catch (IOException e) { e.printStackTrace(); }
⑤获取SD卡总容量:File file = new File(path); if(file.exists()){ Bitmap bitmap = BitmapFactory.decodeFile(path); if(bitmap == null){ file.delete(); return null; }else { return bitmap; } }
⑥获取SD卡剩余容量:public long getSDAllSize(){ //取得SD卡文件路径 File path = Environment.getExternalStorageDirectory(); StatFs sf = new StatFs(path.getPath()); //获取单个数据块的大小(Byte) long blockSize = sf.getBlockSize(); //获取所有数据块数 long allBlocks = sf.getBlockCount(); //返回SD卡大小 //return allBlocks * blockSize; //单位Byte //return (allBlocks * blockSize)/1024; //单位KB return (allBlocks * blockSize)/1024/1024; //单位MB }
public long getSDFreeSize(){ //取得SD卡文件路径 File path = Environment.getExternalStorageDirectory(); StatFs sf = new StatFs(path.getPath()); //获取单个数据块的大小(Byte) long blockSize = sf.getBlockSize(); //空闲的数据块的数量 long freeBlocks = sf.getAvailableBlocks(); //返回SD卡空闲大小 //return freeBlocks * blockSize; //单位Byte //return (freeBlocks * blockSize)/1024; //单位KB return (freeBlocks * blockSize)/1024 /1024; //单位MB }
-
emwin读取sd图片_Android编程读取sd卡中图片的方法
2021-01-17 19:23:35分享给大家供大家参考,具体如下:一、获取读取SD卡的权限二、找到SD卡的目录/*** Environment.getExternalStorageDirectory()得到:“、mnt/sdcard” 即找到了sd卡的根目录*/private String path=Environment.... -
Android编程读取sd卡中图片的方法
2021-01-05 05:25:01一、获取读取SD卡的权限 <!--在SDCard中创建与删除文件权限 --> <uses android:name=android.permission.MOUNT_UNMOUNT_FILESYSTEMS/> <!-- 往SDCard写入数据权限 --> <uses android:name=android.... -
android 读取SD卡文件
2016-07-14 15:40:00因此查看SD卡的内存就跟我们查看硬盘的剩余空间一样,是我们经常操作的一件事,那么在Android开发中,我们如何能获取SD卡的内存容量呢? 首先,要获取SD卡上面的信息,必须先对SD卡有访问的权限,因此第一件事就是... -
AndroidQ的SD卡读取权限问题解决方法
2021-01-03 16:29:47AndroidQ的SD卡读取权限问题解决方法 在学Android中,前面的学习都没有什么问题,一遇到权限问题就蒙了,网上找了好久的,说是Android6.0以上要动态获取权限,我尝试了但是对我项目没有用。 于是我又找又找,终于... -
android 读取sd卡的txt并去除乱码
2015-05-21 13:11:48需要从sd卡读取txt 首先得添加权限 在AndroidManifest.xml 创建一个读写类 FileHelperpackage cn.test.Manager; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.... -
Android 9.0如何读取外置SD卡权限?
2019-01-07 15:04:05现在android 9.0是如何读取外置SD卡权限的?我试过动态和静态申请都不行,在线等,急急急~ 听别人说用DocumentUI,这个怎样用,网上搜到的方法很少~ -
设置读取SD卡权限的问题
2015-08-04 16:06:09在极客学院的Android项目实战中,有个记事本项目,由于视频中没有讲到在哪里加应用的读取SD卡权限问题,导致拍摄的照片和视频都无法存到SD卡中,在网上到处查之后,终于解决了。 在Android的Manifest文件中: xml ... -
Android SD卡读取
2015-07-13 15:01:39博主的开发的第一个Android应用是Txt文本阅读器,其中对SD卡的读取总结如下: 1.SD卡读取权限 对SD卡存取需要在AndroidManifest.xml文件中添加权限: 2.向AVD的SD卡中导入文件提示错误... -
android编程实现sd卡读取数据库的方法
2020-09-03 04:27:10主要介绍了android编程实现sd卡读取数据库的方法,涉及Android权限控制及针对sd卡与数据库的相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下 -
android读取mysql数据库文件_android编程实现sd卡读取数据库的方法
2021-02-06 12:49:41本文实例讲述了android编程实现sd卡读取数据库的方法。分享给大家供大家参考,具体如下:先在 Manifest 里添加权限:然后在 mainActivity 添加方法:SQLiteDatabase db;private final String DATABASE_PATH = ... -
android写入sd卡的权限_前有1TB的U盘,现在,1TB的MicroSD卡也来了。
2020-12-09 13:53:37近日,在在巴塞罗那举办的MWC 2109展会上,著名存储产品制造商闪迪和镁光分别公布了1TB容量的MicroSD卡,这也是目前世界上容量最大的MicroSD卡。据悉,闪迪卡读取速度最高可达160MB/S以及90/MB的写入速度,镁光卡... -
Android sd卡读取
2012-07-26 11:22:37SD卡使用的是FAT(File Allocation Table)的文件系统,不支持访问模式和权限控制,SD卡适用于保存大尺寸的文件...为了读\写SD卡上的文件,必须在AndroidManifest.xml中添加读\写SD卡的权限 在SD卡上创建与删除文件的