import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

/**

* @title 外接设备工具类

*/

publicclassDeviceUitl{

/**

* 获取所有的外接设备目录

* @return

*/

publicstaticList<String>getDeviceFiles(){

List<Partitions> partitionList=getPartitions();//获得挂载点列表

List<String>devicePathList=newArrayList<String>();

if(partitionList!=null&&partitionList.size()>0){//有挂载点

FilemountsFile=newFile("/proc/mounts");

if(mountsFile.exists()&&mountsFile.isFile()&&mountsFile.canRead()){

BufferedReaderreader=null;

try {

reader=newBufferedReader(newFileReader(mountsFile));

List<String> devList = new ArrayList<String>();

String tempString = null;

while ((tempString = reader.readLine()) != null) {

if (tempString.startsWith("/dev/block/vold/")) {

devList.add(tempString);

}

}

for (String strs : devList) {

String[] args = strs.split(" ");

if (args!=null && args.length>2) {

if(isThePartitionPath(partitionList,args[0])){

devicePathList.add(args[1]);

}

}

}

reader.close();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (reader != null) {

try {

reader.close();

} catch (IOException e1) {

}

}

}

}

}

returndevicePathList;

}

/**

* 验证该挂载点是否是移动设备

* @param partitionList 移动设备挂载点列表

* @param point 挂载点

* @return

*/

privatestaticbooleanisThePartitionPath(List<Partitions>partitionList,Stringpoint){

booleanisPartition=false;

if(partitionList!=null&&point!=null){

for(Partitionsp:partitionList){

if(point.endsWith(p.getMajor()+":"+p.getMinior())){

isPartition=true;

break;

}

}

}

returnisPartition;

}

/**

* 获取外接设备挂载点

* @return

*/

publicstaticList<Partitions>getPartitions(){

FilepartitonsFile=newFile("/proc/partitions");

List<Partitions>partitionList=newArrayList<Partitions>();

if(partitonsFile.exists()&&partitonsFile.isFile()){

List<String>lineList=newArrayList<String>();

BufferedReaderreader=null;

try {

reader=newBufferedReader(newFileReader(partitonsFile));

String tempString = null;

while ((tempString = reader.readLine()) != null) {

lineList.add(tempString);

// Log.d("--------partitions tempString:"+tempString);

}

reader.close();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (reader != null) {

try {

reader.close();

} catch (IOException e1) {

e1.printStackTrace();

}

}

}

for (String line : lineList) {

String[]strs=line.trim().split(" ");

Partitionspartitions=newPartitions();

for (int i = 0; i < strs.length; i++) {

if (!"".equals(strs[i])) {

try {

if(partitions.getMajor()==null){

partitions.setMajor(Integer.valueOf(strs[i]));

continue;

}

if(partitions.getMinior()==null){

partitions.setMinior(Integer.valueOf(strs[i]));

continue;

}

if(partitions.getBlocks()==null){

partitions.setBlocks(Long.valueOf(strs[i]));

continue;

}

if(partitions.getName()==null){

partitions.setName(strs[i]);

continue;

}

} catch (Exception e) {

//e.printStackTrace();

continue;

}

}

}

//名称不能为空,不能是mtd

if(partitions.getName()!=null&&!partitions.getName().trim().equals("")&&!partitions.getName().startsWith("mtd")){

partitionList.add(partitions);

}

}

}

returnpartitionList;

}

/**

* @title 挂载点

*/

publicstaticclassPartitions{

privateIntegermajor;//父节点

privateIntegerminior;//分区节点

privateLongblocks;//容量

privateStringname;//名称

publicIntegergetMajor(){

returnmajor;

}

publicvoidsetMajor(Integermajor){

this.major=major;

}

publicIntegergetMinior(){

returnminior;

}

publicvoidsetMinior(Integerminior){

this.minior=minior;

}

publicLonggetBlocks(){

returnblocks;

}

publicvoidsetBlocks(Longblocks){

this.blocks=blocks;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name = name;

}

}

}

更多相关文章

  1. Android(安卓)获取当前设备的IP地址
  2. Android(安卓)获取当前设备的IP地址
  3. Android获取手机的型号和系统版本
  4. Android中子线程网络查看器与Handler消息处理器
  5. android meta-data获取
  6. android 根据pid 获取进程名
  7. Android查看手机通讯录(ListView)
  8. Android获取SDcard目录及创建文件夹;
  9. Android学习之通过content provider获得联系人

随机推荐

  1. Android(安卓)悬浮窗权限各机型各系统适
  2. android中TextView中如何设置水平滚动效
  3. Android(安卓)studio百度地图SDK开发 202
  4. android中的布局 (一)TextView 的属性介绍
  5. Android内核开发:在源码树中添加新的app应
  6. 面试---AMS在Android起到什么作用,简单的
  7. 厚积方能薄发,通往Android封神之路的降龙
  8. 从性能角度选购Adroid智能手机,双核、大屏
  9. Android(安卓)精选项目简介(可参考)
  10. ANDROID Porting系列四、建立公开密钥和