We are supposed to check before this method if the sdcard is available - Android Hardware

Android examples for Hardware:SD Card

Description

We are supposed to check before this method if the sdcard is available

Demo Code

/*//  w ww.j av  a 2 s . c o  m
 * Copyright (C) 2011 Catch.com
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 * 
 * Harry Tormey <harry@catch.com> Modified by Omar Pera <omar@androidsx.com>
 */
//package com.book2s;
import java.io.File;
import java.io.IOException;
import android.content.Context;
import android.os.Environment;

import android.util.Log;

public class Main {
    private static final String NOMEDIA_FILENAME = ".nomedia";
    private static final String TAG = "FileCacheUtil";

    /** We are supposed to check before this method if the sdcard is available */
    private static File getExternalStorageDir(Context context, String dir) {
        if (dir != null) {
            File extMediaDir = new File(
                    Environment.getExternalStorageDirectory()
                            + "/Android/data/" + context.getPackageName()
                            + dir);

            if (extMediaDir.exists()) {
                createNomediaDotFile(context, extMediaDir);
                return extMediaDir;
            }

            if (isSdCardWritable()) {
                extMediaDir.mkdirs();
                createNomediaDotFile(context, extMediaDir);
                return extMediaDir;
            } else {
                Log.e(TAG,
                        "SD card not writeable, unable to create directory: "
                                + extMediaDir.getPath());
            }
        }
        return null;
    }

    private static void createNomediaDotFile(Context context, File directory) {
        if (directory != null && isSdCardWritable()) {
            File nomedia = new File(directory, NOMEDIA_FILENAME);

            if (nomedia != null && !nomedia.exists()) {
                try {
                    nomedia.mkdirs();
                    nomedia.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                    Log.e(TAG, "unable to create .nomedia file in "
                            + directory.getPath(), e);
                }
            }
        }
    }

    /**
     * Returns whether the SD card is available and writable
     */
    public static boolean isSdCardWritable() {
        return Environment.MEDIA_MOUNTED.equals(Environment
                .getExternalStorageState());
    }
}

Related Tutorials