Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
868 views

Externalstorage - Java: The File Containing The Source Code Shown Below Is Located in The Corresponding Directory in

Uploaded by

Aijaz Ali
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
868 views

Externalstorage - Java: The File Containing The Source Code Shown Below Is Located in The Corresponding Directory in

Uploaded by

Aijaz Ali
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 12

ExternalStorage.

java
The file containing the source code shown below is located in the corresponding directory in
<sdk>/platforms/android-<version>/samples/...

/*
 * Copyright (C) 2010 The Android Open
Source Project
 *
 * 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.
 */

package com.example.android.apis.content;

//Need the following import to get access to


the app resources, since this
//class is in a sub-package.
import com.example.android.apis.R;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.media.MediaScannerConnection;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
* Demonstration of styled text resources.
*/
public class ExternalStorage extends
Activity {
    ViewGroup mLayout;

    static class Item {


        View mRoot;
        Button mCreate;
        Button mDelete;
    }

    Item mExternalStoragePublicPicture;
    Item mExternalStoragePrivatePicture;
    Item mExternalStoragePrivateFile;

    @Override
    protected void onCreate(Bundle
savedInstanceState) {
        super.onCreate(savedInstanceState);

       
setContentView(R.layout.external_storage);
        mLayout =
(ViewGroup)findViewById(R.id.layout);
        mExternalStoragePublicPicture =
createStorageControls(
                "Picture:
getExternalStoragePublicDirectory",
               
Environment.getExternalStoragePublicDirector
y(
                       
Environment.DIRECTORY_PICTURES),
                new View.OnClickListener() {
                    public void onClick(View
v) {
                       
createExternalStoragePublicPicture();
                       
updateExternalStorageState();
                    }
                },
                new View.OnClickListener() {
                    public void onClick(View
v) {
                       
deleteExternalStoragePublicPicture();
                       
updateExternalStorageState();
                    }
                });
       
mLayout.addView(mExternalStoragePublicPictur
e.mRoot);
        mExternalStoragePrivatePicture =
createStorageControls(
                "Picture
getExternalFilesDir",
               
getExternalFilesDir(Environment.DIRECTORY_PI
CTURES),
                new View.OnClickListener() {
                    public void onClick(View
v) {
                       
createExternalStoragePrivatePicture();
                       
updateExternalStorageState();
                    }
                },
                new View.OnClickListener() {
                    public void onClick(View
v) {
                       
deleteExternalStoragePrivatePicture();
                       
updateExternalStorageState();
                    }
                });
       
mLayout.addView(mExternalStoragePrivatePictu
re.mRoot);
        mExternalStoragePrivateFile =
createStorageControls(
                "File getExternalFilesDir",
                getExternalFilesDir(null),
                new View.OnClickListener() {
                    public void onClick(View
v) {
                       
createExternalStoragePrivateFile();
                       
updateExternalStorageState();
                    }
                },
                new View.OnClickListener() {
                    public void onClick(View
v) {
                       
deleteExternalStoragePrivateFile();
                       
updateExternalStorageState();
                    }
                });
       
mLayout.addView(mExternalStoragePrivateFile.
mRoot);

        startWatchingExternalStorage();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        stopWatchingExternalStorage();
    }

    void handleExternalStorageState(boolean
available, boolean writeable) {
        boolean has =
hasExternalStoragePublicPicture();
       
mExternalStoragePublicPicture.mCreate.setEna
bled(writeable && !has);
       
mExternalStoragePublicPicture.mDelete.setEna
bled(writeable && has);
        has =
hasExternalStoragePrivatePicture();
       
mExternalStoragePrivatePicture.mCreate.setEn
abled(writeable && !has);
       
mExternalStoragePrivatePicture.mDelete.setEn
abled(writeable && has);
        has =
hasExternalStoragePrivateFile();
       
mExternalStoragePrivateFile.mCreate.setEnabl
ed(writeable && !has);
       
mExternalStoragePrivateFile.mDelete.setEnabl
ed(writeable && has);
    }

    BroadcastReceiver
mExternalStorageReceiver;
    boolean mExternalStorageAvailable =
false;
    boolean mExternalStorageWriteable =
false;

    void updateExternalStorageState() {
        String state =
Environment.getExternalStorageState();
        if
(Environment.MEDIA_MOUNTED.equals(state)) {
            mExternalStorageAvailable =
mExternalStorageWriteable = true;
        } else if
(Environment.MEDIA_MOUNTED_READ_ONLY.equals(
state)) {
            mExternalStorageAvailable =
true;
            mExternalStorageWriteable =
false;
        } else {
            mExternalStorageAvailable =
mExternalStorageWriteable = false;
        }
       
handleExternalStorageState(mExternalStorageA
vailable,
                mExternalStorageWriteable);
    }

    void startWatchingExternalStorage() {
        mExternalStorageReceiver = new
BroadcastReceiver() {
            @Override
            public void onReceive(Context
context, Intent intent) {
                Log.i("test", "Storage: " +
intent.getData());
               
updateExternalStorageState();
            }
        };
        IntentFilter filter = new
IntentFilter();
       
filter.addAction(Intent.ACTION_MEDIA_MOUNTED
);
       
filter.addAction(Intent.ACTION_MEDIA_REMOVED
);
       
registerReceiver(mExternalStorageReceiver,
filter);
        updateExternalStorageState();
    }

    void stopWatchingExternalStorage() {
       
unregisterReceiver(mExternalStorageReceiver)
;
    }

    void
createExternalStoragePublicPicture() {
        // Create a path where we will place
our picture in the user's
        // public pictures directory.  Note
that you should be careful about
        // what you place here, since the
user often manages these files.  For
        // pictures and other media owned by
the application, consider
        // Context.getExternalMediaDir().
        File path =
Environment.getExternalStoragePublicDirector
y(
               
Environment.DIRECTORY_PICTURES);
        File file = new File(path,
"DemoPicture.jpg");

        try {
            // Make sure the Pictures
directory exists.
            path.mkdirs();

            // Very simple code to copy a


picture from the application's
            // resource into the external
file.  Note that this code does
            // no error checking, and
assumes the picture is small (does not
            // try to copy it in chunks).
Note that if external storage is
            // not currently mounted this
will silently fail.
            InputStream is =
getResources().openRawResource(R.drawable.ba
lloons);
            OutputStream os = new
FileOutputStream(file);
            byte[] data = new
byte[is.available()];
            is.read(data);
            os.write(data);
            is.close();
            os.close();

            // Tell the media scanner about


the new file so that it is
            // immediately available to the
user.
           
MediaScannerConnection.scanFile(this,
                    new String[]
{ file.toString() }, null,
                    new
MediaScannerConnection.OnScanCompletedListen
er() {
                public void
onScanCompleted(String path, Uri uri) {
                    Log.i("ExternalStorage",
"Scanned " + path + ":");
                    Log.i("ExternalStorage",
"-> uri=" + uri);
                }
            });
        } catch (IOException e) {
            // Unable to create file, likely
because external storage is
            // not currently mounted.
            Log.w("ExternalStorage", "Error
writing " + file, e);
        }
    }

    void
deleteExternalStoragePublicPicture() {
        // Create a path where we will place
our picture in the user's
        // public pictures directory and
delete the file.  If external
        // storage is not currently mounted
this will fail.
        File path =
Environment.getExternalStoragePublicDirector
y(
               
Environment.DIRECTORY_PICTURES);
        File file = new File(path,
"DemoPicture.jpg");
        file.delete();
    }

    boolean
hasExternalStoragePublicPicture() {
        // Create a path where we will place
our picture in the user's
        // public pictures directory and
check if the file exists.  If
        // external storage is not currently
mounted this will think the
        // picture doesn't exist.
        File path =
Environment.getExternalStoragePublicDirector
y(
               
Environment.DIRECTORY_PICTURES);
        File file = new File(path,
"DemoPicture.jpg");
        return file.exists();
    }

    void
createExternalStoragePrivatePicture() {
        // Create a path where we will place
our picture in our own private
        // pictures directory.  Note that we
don't really need to place a
        // picture in DIRECTORY_PICTURES,
since the media scanner will see
        // all media in these directories;
this may be useful with other
        // media types such as
DIRECTORY_MUSIC however to help it classify
        // your media for display to the
user.
        File path =
getExternalFilesDir(Environment.DIRECTORY_PI
CTURES);
        File file = new File(path,
"DemoPicture.jpg");

        try {
            // Very simple code to copy a
picture from the application's
            // resource into the external
file.  Note that this code does
            // no error checking, and
assumes the picture is small (does not
            // try to copy it in chunks).
Note that if external storage is
            // not currently mounted this
will silently fail.
            InputStream is =
getResources().openRawResource(R.drawable.ba
lloons);
            OutputStream os = new
FileOutputStream(file);
            byte[] data = new
byte[is.available()];
            is.read(data);
            os.write(data);
            is.close();
            os.close();

            // Tell the media scanner about


the new file so that it is
            // immediately available to the
user.
           
MediaScannerConnection.scanFile(this,
                    new String[]
{ file.toString() }, null,
                    new
MediaScannerConnection.OnScanCompletedListen
er() {
                public void
onScanCompleted(String path, Uri uri) {
                    Log.i("ExternalStorage",
"Scanned " + path + ":");
                    Log.i("ExternalStorage",
"-> uri=" + uri);
                }
            });
        } catch (IOException e) {
            // Unable to create file, likely
because external storage is
            // not currently mounted.
            Log.w("ExternalStorage", "Error
writing " + file, e);
        }
    }

    void
deleteExternalStoragePrivatePicture() {
        // Create a path where we will place
our picture in the user's
        // public pictures directory and
delete the file.  If external
        // storage is not currently mounted
this will fail.
        File path =
getExternalFilesDir(Environment.DIRECTORY_PI
CTURES);
        if (path != null) {
            File file = new File(path,
"DemoPicture.jpg");
            file.delete();
        }
    }

    boolean
hasExternalStoragePrivatePicture() {
        // Create a path where we will place
our picture in the user's
        // public pictures directory and
check if the file exists.  If
        // external storage is not currently
mounted this will think the
        // picture doesn't exist.
        File path =
getExternalFilesDir(Environment.DIRECTORY_PI
CTURES);
        if (path != null) {
            File file = new File(path,
"DemoPicture.jpg");
            return file.exists();
        }
        return false;
    }

     void createExternalStoragePrivateFile()
{
         // Create a path where we will
place our private file on external
         // storage.
         File file = new
File(getExternalFilesDir(null),
"DemoFile.jpg");

         try {
             // Very simple code to copy a
picture from the application's
             // resource into the external
file.  Note that this code does
             // no error checking, and
assumes the picture is small (does not
             // try to copy it in chunks).
Note that if external storage is
             // not currently mounted this
will silently fail.
             InputStream is =
getResources().openRawResource(R.drawable.ba
lloons);
             OutputStream os = new
FileOutputStream(file);
             byte[] data = new
byte[is.available()];
             is.read(data);
             os.write(data);
             is.close();
             os.close();
         } catch (IOException e) {
             // Unable to create file,
likely because external storage is
             // not currently mounted.
             Log.w("ExternalStorage", "Error
writing " + file, e);
         }
     }

     void deleteExternalStoragePrivateFile()
{
         // Get path for the file on
external storage.  If external
         // storage is not currently mounted
this will fail.
         File file = new
File(getExternalFilesDir(null),
"DemoFile.jpg");
         if (file != null) {
             file.delete();
         }
     }

     boolean hasExternalStoragePrivateFile()
{
         // Get path for the file on
external storage.  If external
         // storage is not currently mounted
this will fail.
         File file = new
File(getExternalFilesDir(null),
"DemoFile.jpg");
         if (file != null) {
             return file.exists();
         }
         return false;
     }

    Item createStorageControls(CharSequence
label, File path,
            View.OnClickListener
createClick,
            View.OnClickListener
deleteClick) {
        LayoutInflater inflater =
(LayoutInflater)getSystemService(LAYOUT_INFL
ATER_SERVICE);
        Item item = new Item();
        item.mRoot =
inflater.inflate(R.layout.external_storage_i
tem, null);
        TextView tv =
(TextView)item.mRoot.findViewById(R.id.label
);
        tv.setText(label);
        if (path != null) {
            tv =
(TextView)item.mRoot.findViewById(R.id.path)
;
            tv.setText(path.toString());
        }
        item.mCreate =
(Button)item.mRoot.findViewById(R.id.create)
;
       
item.mCreate.setOnClickListener(createClick)
;
        item.mDelete =
(Button)item.mRoot.findViewById(R.id.delete)
;
       
item.mDelete.setOnClickListener(deleteClick)
;
        return item;
    }
}

You might also like