工作之余抽点时间出来写写博文,希望对新接触的朋友有帮助。今天在这里和大家一起学习一下卡内存
android开辟关于和用使本机内存,内置存储卡和外置存储卡
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
关于android存储器简介:
android开辟常常须要触及数据缓存,这就须要我们解了手机前当用使的内存状态,是不是存在外置存储卡,如果有怎么办,没有是不是用使内置存储卡。
首先手机本机存储器,有Rom,Ram。
Rom :在android中Rom相当于系统盘,当C盘用 ,很多时候要用使须要取获root权限。
一般可以分为机身内存和内置存储(星三的多是叫:USB存储器);
机身内存包含system、data和cache等区分录目,件软默许都是装安机身内存或者内置存储卡里的 。
data(就是手机存储总量)+system(手机系统占用)
详细看是什么手机;
Ram:在相当于电脑的行运内存,运存 。不多做解释,就是随机行运时内存,断电数据全体消逝。
外置存储器有:手机存储器 (TF卡), 相当于D,E ,F 等硬盘。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
android开辟中读取手机存储器和外置存储器。
Android读取手机内存之机身内存
这个我复反实验过,可以弄入以及读取数据到data录目下,但是须要取获root权限,这个真有点纠结,难道要用使**件软的人都去root下?。嘿嘿,所以这里不荐推,这里就不粘贴码代了........
Android读取手机内存之内置存储器实例
面下给出一个小例子来说明如何里的件文,这在Android开辟中是较比要重的一部分,如何要是把握好不的话,我们就没法把数据库里保存的数据给读出来,也就是说我们我们每一次玩游戏的时候,我们的数据库都是最原始的数据,这样就会给我们带来很多的烦麻。如果涌现这样的情事,那么你的应用就是非常烂的,码代如下:public static InputStream readInternalFileInputStream(Context context,String fileName){ /** * 读取手机内存件文 * */ try{ FileInputStream fis = context.openFileInput(fileName); return fis; }catch(Exception e){ return null; } } public static String readInternalFile(Context context,String fileName){ /** * 读取手机内存件文 * */ try{ byte[] buffer = new byte[512]; int read =0; StringBuffer stringbuffer = new StringBuffer(); FileInputStream fis = context.openFileInput(fileName); do{ read = fis.read(buffer); if(read>0) stringbuffer.append(new String(buffer, 0, read, "utf-8")); }while(read!=-1); fis.close(); return stringbuffer.toString(); }catch(Exception e){ return null; } }
外置内存
android 读取sd卡中的图片
一 读取sd卡中的图片
1 取获读取sd的权限 在AndroidMainfest.xml件文中添加注意:在<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的data和system以及cache系统录目解讲
原文:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Android 4.0中关于内外置存储卡写读权限问题
在2.x的版本中,在manifest中配置的权限android.permission.WRITE_EXTERNAL_STORAGE确实是用来使得sd卡取得写的权限。而在4.0开辟的源码当中,由于有了内外置sd卡的区,android.permission.WRITE_EXTERNAL_STORAGE的权限用来置设了内置sd卡的写权限,如果在manifest中只是配置了这个权限,那个应用只能在内置sd卡中停止写作操,还是法无在外置sd卡中停止写作操。
须要写外置sd卡的话,须要配置另一个权限android.permission.WRITE_MEDIA_STORAGE,这样可就以在外置sd卡中停止写入作操了。 这两个权限都被义定在android源码录目\frameworks\base\data\etc\platform.xml中: 用使到的类主要是framework/base/core/java/android/os/storage/StorageVolume.java及雷同录目下的StorageManager.java件文。 StorageManager类可以取得有所的存储媒体列表,及StorageVolume类型的数组,从而可以取得对应存储是不是可写读一类的信息。
问题在于 android 4.0的 SDK包中没有加增这个口接 处理的法办 一种是赖依 厂家将这2个权限默许为一个 也就是外部存储SD卡的android.permission.WRITE_EXTERNAL_STORAGE 和android.permission.WRITE_MEDIA_STORAGE同等 —— 这个是现在较比好的做法 第二种是: reflection 这个我详细没有弄过 待验证 第三种是 将你的源码代在 android的source code下编译 ; 或者失掉厂家定制的android.jar包。
希望可以帮助到遇雷同问题的童鞋。
原文地址
待续.......
文章结束给大家分享下程序员的一些笑话语录: 话剧:程序员过沟
本剧内容纯属虚构,如有雷同……HEHE……俺也没办法了。 话说某市街道改建,某某软件公司门口横七竖八挖了几条大沟。一群程序员(SDK程序员赵某,VB程序员钱某,VC程序员孙某,DELPHI程序员李某)下班从公司里出来,看到门前的几条沟,于是各显神通……门前第一条沟也就半米来宽,SDK程序员赵某二话没说,轻轻一跃跳了过去,看到其它人纷纷把随身携带的公文包(类库)横在沟上踩着过沟,不屑地说,这么小一条沟,犯得着小题大做用那个吗?看我多么轻松多么洒脱多么……多么……(众人皆怒目横视之……) 接着第二条沟有点宽度。SDK程序员赵某还是还是一马当先,飞跃而起……不好,还差一点才到……幸好凭着多年的(跳远?编程?)经验,单手抓住沟沿,颤巍巍地爬了上来,嘴里还念念有词“高手就是高手啊,虽然差一点就……不过毕竟……HEHE……跳远是过沟的基础嘛,有基础(SDK)就有一切的说……”(众人作瞠目结舌状……)看到别人跳过去了,可自己又跳不了那么远,只好再想办法了……VB程序员钱某,DELPHI程序员李某打开手提,连上手机,开始上网找可供过沟的控件……VC程序员孙某却不慌不忙,打开公文包,把几块衬板拆了下来,然后三下五除二拼成一个简易木桥……“虽然这几个板子(类)做得不怎么样,不过先把这个项目应付过去,有时间我自己做一个好了……”于是踩着板子过了沟。 这时钱某和李某也分别找到了合适的东东。钱某找到的是“钢丝绳.ocx”,安装简单,使用方便,拉出一头,对孙某说“大虾,顺手拉兄弟一把……”,于是把绳子系在沟两边的绿化树木上,踩着钢丝就过了沟。刚刚站稳就四方作揖,“小生这里有礼了”。这时一戴着黄袖圈的老太太跳了出来,抓住钱某,“破坏绿化树木,罚款XXXX元,交钱,交钱,交钱!”(老人家作双枪老太婆怒视伪军状 ……钱某被逼无奈,只好边掏钱,边对着后台叫道“导演,我这可是因公牺牲,不给个烈士称号也得报销”,后台一个臭鸡蛋飞出,“叫什么叫,我这个月的粮饷还不知哪里去领呢,都什么时代了,你不下岗都不错了……”) 李某看着刚刚好不容易从台湾拖回来的“铝条.ZIP”