Android SD卡上文件操作及记录日志操作具体方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android SD卡上文件操作及记录日志操作具体方法相关的知识,希望对你有一定的参考价值。

参考技术A   本文实例讲述了android SD卡上文件操作及记录日志操作的方法。分享给大家供大家参考,具体如下:

  SD卡是否存在

  private boolean checkSDCardStatus() boolean SDCardStatus = false; String sDStateString = android.os.Environment.getExternalStorageState(); if (sDStateString.equals(android.os.Environment.MEDIA_MOUNTED)) SDCardStatus = true; else

  SD卡不可用

  return SDCardStatus

  SD卡上是否有APK文件

  private boolean checkFileExist(String iFilePath) boolean fileExist = false; if (checkSDCardStatus()) File myFile = new File(iFilePath); if (myFile.exists()) fileExist = true; return fileExist;

  删除文件

  private void Apk(String iFilePath) if (checkSDCardStatus()) File myFile = new File(iFilePath); if (myFile.exists()) myFile.();

  在SD 卡上用txt记录

  public static void logOnFile(String format, Object... args) String logstr = String.format(format, args); SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String date = sDateFormat.format(new java.util.Date()); logstr = "/r/n-------------------------/r/n" + date + "/r/n" + logstr; FileOutputStream fout; DataOutputStream dataout; try fout = new FileOutputStream("//sdcard//log.txt",true); dataout = new DataOutputStream(fout); dataout.writeUTF(logstr); dataout.flush(); dataout.close(); fout.flush(); fout.close(); catch (FileNotFoundException e) e.printStackTrace(); catch (IOException e) e.printStackTrace();

  希望本文所述对大家Android程序设计有所帮助。

Android判断SD卡是不是存在的实现

Android作为一个智能手机操作系统,SDK对SIM卡的读取有相关的操作,都封装在framework中

和SIM卡相关的类主要有以下几个:

    IccConstants  (里面记录很多的常量,主要用来存储某个字段在SIM卡上的位置是什么,比如ADN(sim卡上的电话本),6F3A,  FDN(固定拔号 6F3B))IccCardStatus(记录SIM卡的状态,如ABSENT, READY,UNKNOW,ETC)

    IccFileHandler(这个是用来SIM卡上的RECORD读完后,要处理什么事情)

    IccRecords(SIM卡上的文件内容,每一个字段,一个RECORD)

    IccProvider(手机上的数据库,读出来的数据全放这)

    IccUtils(里面一般全是静态方法,主要用来码制转换)

    IccSmsInterfaceManager,IccCard(这个是一个抽象类,会根据上面手机的制式,自动起一个SIMCARD 或者RUIMCARD)


以GSM为例说下读取的过程:

    根据SIM卡的类型,进入SIMRecords, 开始探测SIM卡的状态,因为,有些SIM卡会设置有PIN码,如果SIM卡有PIN码的话,手机会弹出输入PIN码的框,等待用户进行解码,注意,这个时候,如果PIN码如果没有解的话,手机是不会去读SIM卡的,因为,读SIM卡时,必须通过PIN才能去读,只有一些比较特殊的字段,可以不用,比如ECC 也就是紧急呼叫号码(一般存在卡上,运营商定制的)。同时,这PIN码未解的情况,手机中SIM卡的状态也是PIN_REQURIED_BLOCK。

    当解完PIN码,或是手机没有设置PIN码,这时,手机的会探测到SIM是READY的状态,手机只有检测到SIM READY,才会发出读卡的请求。

    手机开始读卡第一个是IMSI(International Mobile SubscriberIdentification Number)主要用来查找运营商的网络,里面有MCC,MNC,ICCID(Integrate circuit card identity)唯一标识一个移动用户。

    当低层的MODEM读到字段结果后,会有一个返回结果,由于发送读取请求时,有一个事件信息EVENT_GET_BINARY_SIZE_DONE,当有返回时,会直接交给IccFileHandler,然后由IccFileHandler转发给SIMRecords,最后进行处理该字段读完后应该执行的操作。

参考技术A   1首先判断SD卡是否存在之前需要增加一些权限:
  <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
  2实现方法:
    private boolean ExistSDCard()
  if (android.os.Environment.getExternalStorageState().equals(
  android.os.Environment.MEDIA_MOUNTED))
  return true;
   else
  return false;
  

扩展:
获取sd卡的路径:String path = Environment.getExternalStorageDirectory();
参考技术B 核心提示:Android中判断SD卡是否存在,并且可以进行写操作,,可以使用如下代码if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))本回答被提问者采纳

以上是关于Android SD卡上文件操作及记录日志操作具体方法的主要内容,如果未能解决你的问题,请参考以下文章

Android:从 sd 卡上的特定位置获取缩略图

在 Android 应用程序中解压缩 sd 卡上的压缩文件

如何在 Android 中获取 SD 卡上文件夹的大小?

Android (Studio) FileNotFoundException 但文件在 SD 卡上

安卓Android系统手机软件怎么装到SD卡上

如何从 Android API 24+ 在 SD 卡上写入文件