卡内存android开发关于和使用本机内存,内置存储卡和外置存储卡大揭秘卡内存...

工作之余抽点时间出来写写博文,希望对新接触的朋友有帮助。今天在这里和大家一起学习一下卡内存

    

    

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读取手机内存里的件文,这在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件文中添加

  

         <!-- 在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的data和system以及cache系统录目解讲

 
 
 
/system 寄存的是rom的信息;
 
/system/app 寄存rom本身附带的件软即系统件软;
 
/system/data 寄存/system/app 中核心系统件软的数据件文信息。
 
 /data 寄存的是户用的件软信息(非自带rom装安的件软);
 
/data/app 寄存户用装安的件软;
 
/data/data 寄存有所件软(包含/system/app 和 /data/app 和 /mnt/asec中装的件软)的一些lib和xml件文等数据信息;
 
/data/dalvik-cache 寄存程序的缓存件文,这里的件文都是可以删除的。
 


 

    

/sdcard和/mnt/sdcard一样吗?/mnt/asce是干吗用的?

    

 

    

我来谈谈/mnt/asce录目

    

1、android升级到2.2以上,涌现了这个录目,这个录目是干什么的呢?

    

2、2.2以上,涌现了新的功能,应用可以装安的sd卡上,哪到底装安在哪儿呢?我找遍了个整卡结果发现了有所这些应用装安在.android 的asecure录目下,要把卡放到读卡器上去看才道知。

    

3、那是如何与系统发生系关的,学过unix的人都道知,mnt是在/下的一个录目,sd卡是通过mount接挂上去的,/mnt叫接挂点,系统就可以通过接挂点/mnt拜访sd卡了

    

4、在/mnt下有三个录目如下:asec、secure、sdcard 其中asec就是我们装安在卡上的应用、secure是于用sd卡应用程序装安径路加密的吧自己想猜的、sdcard就是卡上的其他容内。

    

 

    

 

    

/mnt/asce实际上对应的真正物理录目是/mnt/sdcard/.android_secure(住记android_secure前有个点,这是个隐藏录目)

    

 

    

 

    

我们回过来看/sdcard和/mnt/sdcard就易容解理:

    

 

    

/sdcard 录目,这是一个软链接(相当于windows的件文夹的快捷方法),链接到/mnt/sdcard 录目,即这个录目的容内就是sdcard的容内。

    

 

    

 

    

   因此,户用程序装安到到sd卡上后,其容内可能疏散到:/mnt/asec , /mnt/secure , /data/data 。

    

 

    

    要现实app2sd,现在较比风行有两种案方,分离是app2ext 和 data2ext,面下分离绍介下这2种案方。

    

 

    

    app2ext的道理是,删除data区中的app件文夹,然后在sd卡的ext区分上建创一个app件文,并通过软链接映射到data区。这样系统会以为,app这个软链接是一个实真的件文夹,会把程序都装安在里头,但实际上,这些程序都装安到卡上了。但由于作操系统并不道知,所以这类情况下,我们仍然看到系统示显这个程序是装安在“内置间空”的。

    

    data2ext则更底彻,它不是用软链接,而是直接用“挂载”功能,Linux下有所的存储设备都必须挂载成一个件文夹才能停止件文作操(如sd卡就挂载在/mnt/sdcard录目面下)。data件文夹本来是对应手机外部Flash中的一个区分(为了持保语术的确准,这里要把外部Flash和内存相别区,外部Flash是ROM,内存是RAM)。而data2ext则是修改了挂载对应系关,使data件文夹挂载的不是内置Flash,而是sd卡的个整ext区分。这样,不仅是app,连存储程序置设的data和缓存dalvik-cache都市存储到sd卡中。

    

 

    

    可以看到,dalvik-cache和data这两个件文夹的位置,是这两种方法的一个大重别区。其中dalvik-cache是虚拟机预编译缓存,data(不同于/data,这个是/data/data)是存储程序数据的地方,例如游戏的存档记载,件软的配置信息等。这样有什么别区,别区在于假如你重刷了ROM,app2ext的话,有所的程序都可以保存,但是这些程序的配置信息和游戏的存档都市失丢。而data2ext则可以连同配置和存档都保存,但是dalvik-cache也是一个易容积聚圾垃的地方,这些圾垃也会一起保存。

    

 

    

 

    

    data2ext由于是把个整data区分都放在sd卡上,因此,我们刷ROM须要WIPE的时候,这个data区分的容内可就可以不会被wipe,这可以保存户用的个人资料,但是也可能成造系统妙其名莫的障故。

    

 

    

 

    

    原文:http://www.2cto.com/kf/201212/178288.html

    

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    

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包。


希望可以帮助到遇雷同问题的童鞋。

原文地址http://blog.sina.com.cn/s/blog_5da93c8f0101fgy9.html




    

      

    待续.......

文章结束给大家分享下程序员的一些笑话语录: 话剧:程序员过沟
  本剧内容纯属虚构,如有雷同……HEHE……俺也没办法了。
  话说某市街道改建,某某软件公司门口横七竖八挖了几条大沟。一群程序员(SDK程序员赵某,VB程序员钱某,VC程序员孙某,DELPHI程序员李某)下班从公司里出来,看到门前的几条沟,于是各显神通……门前第一条沟也就半米来宽,SDK程序员赵某二话没说,轻轻一跃跳了过去,看到其它人纷纷把随身携带的公文包(类库)横在沟上踩着过沟,不屑地说,这么小一条沟,犯得着小题大做用那个吗?看我多么轻松多么洒脱多么……多么……(众人皆怒目横视之……)
  接着第二条沟有点宽度。SDK程序员赵某还是还是一马当先,飞跃而起……不好,还差一点才到……幸好凭着多年的(跳远?编程?)经验,单手抓住沟沿,颤巍巍地爬了上来,嘴里还念念有词“高手就是高手啊,虽然差一点就……不过毕竟……HEHE……跳远是过沟的基础嘛,有基础(SDK)就有一切的说……”(众人作瞠目结舌状……)看到别人跳过去了,可自己又跳不了那么远,只好再想办法了……VB程序员钱某,DELPHI程序员李某打开手提,连上手机,开始上网找可供过沟的控件……VC程序员孙某却不慌不忙,打开公文包,把几块衬板拆了下来,然后三下五除二拼成一个简易木桥……“虽然这几个板子(类)做得不怎么样,不过先把这个项目应付过去,有时间我自己做一个好了……”于是踩着板子过了沟。
  这时钱某和李某也分别找到了合适的东东。钱某找到的是“钢丝绳.ocx”,安装简单,使用方便,拉出一头,对孙某说“大虾,顺手拉兄弟一把……”,于是把绳子系在沟两边的绿化树木上,踩着钢丝就过了沟。刚刚站稳就四方作揖,“小生这里有礼了”。这时一戴着黄袖圈的老太太跳了出来,抓住钱某,“破坏绿化树木,罚款XXXX元,交钱,交钱,交钱!”(老人家作双枪老太婆怒视伪军状
……钱某被逼无奈,只好边掏钱,边对着后台叫道“导演,我这可是因公牺牲,不给个烈士称号也得报销”,后台一个臭鸡蛋飞出,“叫什么叫,我这个月的粮饷还不知哪里去领呢,都什么时代了,你不下岗都不错了……”)
  李某看着刚刚好不容易从台湾拖回来的“铝条.ZIP”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值