android检测SD Card是不是可用

android检测SD Card是否可用
欢迎转载,转载请注明出自:www.androidkaifa.com 安卓开发网
public class SDCardListener extends BroadcastReceiver {

        private static boolean sdcardAvailable;
        private static boolean sdcardAvailabilityDetected;

        
        /**
         * 
         * @return SD is available ?
         */
        public static synchronized boolean detectSDCardAvailability() {
                boolean result = false;
                try {
                        Date now = new Date();
                        long times = now.getTime();
                        String fileName = "/sdcard/" + times + ".test";
                        File file = new File(fileName);
                        result = file.createNewFile();
                        file.delete();
                } catch (Exception e) {
                        // Can't create file, SD Card is not available
                        e.printStackTrace();
                } finally {
                        sdcardAvailabilityDetected = true;
                        sdcardAvailable = result;
                }
                return result;
        }
        
        /**
         * 
         * @return SD is available ?
         */
        public static boolean isSDCardAvailable() {
                if(!sdcardAvailabilityDetected) {
                        sdcardAvailable = detectSDCardAvailability();
                        sdcardAvailabilityDetected = true;
                }
                return  sdcardAvailable;
        }
        
        /* (non-Javadoc)
         * @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent)
         */     
        public void onReceive(Context context, Intent intent) {
                sdcardAvailabilityDetected = false;
                sdcardAvailable = detectSDCardAvailability();
                sdcardAvailabilityDetected = true;
        }

}
将下面的这些写入你的项目功能配置文件中:
<receiver android:name=".SDCardListener">
                        <intent-filter>
                                <action android:name="android.intent.action.MEDIA_EJECT" />
                                <action android:name="android.intent.action.MEDIA_MOUNTED" />
                                <action android:name="android.intent.action.MEDIA_REMOVED" />
                                <action android:name="android.intent.action.MEDIA_UNMOUNTED" />
                                <data android:scheme="file" />
                        </intent-filter>
                </receiver>

如果我们认为上述方法太麻烦了,我给一个超级简单的方法来确定的代码如下

if (Environment.getExternalStorageState().equals(
                                        Environment.MEDIA_MOUNTED)) {
                                // sd card  Available  
                                        
                                }else {
//  Not currently available  
}