Android可以通过广播来监听外部存储设备的挂载与卸载 但已经挂载的外部设备要怎么来获得它们的信息呢 ,在本篇文章中我分享一种方法:
<span style="white-space:pre"> </span>List<ExtraInfo> mExtraInfos = null;
try {
Class localClass = Class.forName("android.os.ServiceManager");
if (localClass != null) {
Method localMethod = localClass.getMethod("getService",new Class[] { String.class });
if (localMethod != null) {
Object localObject = localMethod.invoke(localClass,new String[] { "mount" });
if (localObject != null) {
Method localMethod1 = Class.forName("android.os.storage.IMountService$Stub")
<span style="white-space:pre"> </span>.getMethod("asInterface",
new Class[] { IBinder.class });
if (localMethod1 != null) {
Object localObject1 = localMethod1.invoke(
localMethod1, new Object[] { localObject });
if (localObject1 != null) {
Method localMethod2 = localObject1.getClass()
.getMethod("getAllExtraInfos",
new Class[0]);
if (localMethod2 != null) {
Object localObject2 = localMethod2.invoke(
localObject1, new Object[0]);
if (localObject2 != null) {
mExtraInfos = (List<ExtraInfo>) localObject2;
}
}
}
}
}
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
通过上面的代码就可以获得已经挂载的设备的list 可以从里面去的你所想要的信息