访问android所有可以使用的外接设备
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;
}
}
}
更多相关文章
- Android(安卓)获取当前设备的IP地址
- Android(安卓)获取当前设备的IP地址
- Android获取手机的型号和系统版本
- Android中子线程网络查看器与Handler消息处理器
- android meta-data获取
- android 根据pid 获取进程名
- Android查看手机通讯录(ListView)
- Android获取SDcard目录及创建文件夹;
- Android学习之通过content provider获得联系人