android监听TF卡插拔事件 判断

来源:互联网 发布:空耳yaya的淘宝店 编辑:程序博客网 时间:2024/06/01 08:58

  如何通过注册广播获知TF插拔事件:


注册广播:

        IntentFilter filter = new IntentFilter();        filter.addAction(Intent.ACTION_MEDIA_EJECT);        filter.addAction(Intent.ACTION_MEDIA_MOUNTED);        filter.addDataScheme("file");        this.registerReceiver(usbReceiver, filter);  
 需要添加 
filter.addDataScheme("file");

如何判断TF、USB是否插入以及获取路径:

通过反射获取类 StorageManager 中的 getVolumePaths 方法获取路径。

private StorageManager mStorageManager;

private static String mInterSD; // 内置sd卡

private static String mExternalSD; // 外置sd卡 1

private static String mUSB; // U盘,外置sd卡2

private String[] mPath;

public void getStorageList() {

if (mActivity != null) {

mStorageManager = (StorageManager) mActivity.getSystemService(Activity.STORAGE_SERVICE);

try {

mMethodGetPaths = mStorageManager.getClass().getMethod("getVolumePaths");

mPath = (String[]) mMethodGetPaths.invoke(mStorageManager);

if (mPath.length > 0) {

mInterSD= mPath[0];

}

if (mPath.length > 1) {

mExternalSD= mPath[1];

}

if (mPath.length > 2) {

mUSB= mPath[2];

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

public boolean getExternalStorageState() {

if(TextUtils.isEmpty(EXTERNAL_STORAGE_DIRECTORY)) {

return false;

}

try {

return "mounted".equals(Environment.getStorageState(new File(mExternalSD)));

} catch (Exception rex) {

return false;

}

}

                                             
0 0