解决方案 »

  1.   

    请参考http://blog.csdn.net/xubright/article/details/9832607
      

  2.   

    我看到网上有不少方法说监听U盘插拔广播,然后通过intent.getData().getPath()方法获得U盘的挂载路径。可是网上给出的例子都是一部分代码,放到工程中全是错误。自己摸索着写了一个,可是插入U盘时,intent.getAction()等信息能读出来,但是intent.getData()信息却为空。请问有没有这方面的资料?
      

  3.   

    可以参考下面的代码:
        private static final String PROP_SD_INTERNAL_PATH = "internal_sd_path";
        private static final String PROP_SD_EXTERNAL_PATH = "external_sd_path";
    /**
            * Returns external SD card path.
            * @hide
            * @internal
            */
        public static String getExternalStoragePath() {
            String path = null;
            try {
                path = SystemProperties.get(PROP_SD_EXTERNAL_PATH);
                Log.i(TAG, "getExternalStoragePath path=" + path);
            } catch (IllegalArgumentException e) {
                Log.e(TAG, "IllegalArgumentException when getExternalStoragePath:" + e);
            }
            Log.d(TAG, "getExternalStoragePath path=" + path);
            return path ;
        }    /**
            * Returns internal Storage path.
            * @hide
            * @internal
            */
        public static String getInternalStoragePath() {
            String path = null;
            try {
                path = SystemProperties.get(PROP_SD_INTERNAL_PATH);
                Log.i(TAG, "getInternalStoragePath from Property path=" + path);
            } catch (IllegalArgumentException e) {
                Log.e(TAG, "IllegalArgumentException when getInternalStoragePath:" + e);
            }
            if (STORAGE_PATH_SD1.equals(path)) {
                if (Process.myUid() == Process.SYSTEM_UID) {
                    path = "/storage/emulated/"+Integer.toString(Process.SYSTEM_UID);
                } else {
                    path = Environment.getExternalStorageDirectory().toString();
                }
            }
            Log.d(TAG, "getInternalStoragePath path=" + path);
            return path ;
        }