web-dev-qa-db-ja.com

私のAndroidデバイスの内部ダウンロードフォルダーパスを取得する方法

Androidデバイスの内部ダウンロードフォルダーパスを取得できますか?

16
Andrey

デバイスにSDカードがある場合は、次を使用します。

Environment.getExternalStorageState() 

sDカードがない場合は、次を使用します。

Environment.getDataDirectory()

sDカードがない場合は、デバイス上に独自のディレクトリをローカルに作成できます。

    //if there is no SD card, create new directory objects to make directory on device
        if (Environment.getExternalStorageState() == null) {
                        //create new file directory object
            directory = new File(Environment.getDataDirectory()
                    + "/RobotiumTestLog/");
            photoDirectory = new File(Environment.getDataDirectory()
                    + "/Robotium-Screenshots/");
            /*
             * this checks to see if there are any previous test photo files
             * if there are any photos, they are deleted for the sake of
             * memory
             */
            if (photoDirectory.exists()) {
                File[] dirFiles = photoDirectory.listFiles();
                if (dirFiles.length != 0) {
                    for (int ii = 0; ii <= dirFiles.length; ii++) {
                        dirFiles[ii].delete();
                    }
                }
            }
            // if no directory exists, create new directory
            if (!directory.exists()) {
                directory.mkdir();
            }

            // if phone DOES have sd card
        } else if (Environment.getExternalStorageState() != null) {
            // search for directory on SD card
            directory = new File(Environment.getExternalStorageDirectory()
                    + "/RobotiumTestLog/");
            photoDirectory = new File(
                    Environment.getExternalStorageDirectory()
                            + "/Robotium-Screenshots/");
            if (photoDirectory.exists()) {
                File[] dirFiles = photoDirectory.listFiles();
                if (dirFiles.length > 0) {
                    for (int ii = 0; ii < dirFiles.length; ii++) {
                        dirFiles[ii].delete();
                    }
                    dirFiles = null;
                }
            }
            // if no directory exists, create new directory to store test
            // results
            if (!directory.exists()) {
                directory.mkdir();
            }
        }// end of SD card checking

manifest.xmlにアクセス許可を追加します

<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />

ハッピーコーディング..

32
Dinithe Pieris

アプリの内部ストレージの場所を見つけるには、getFilesDir()を使用します。これは、任意のコンテキスト(アクティビティなど)で呼び出され、Fileオブジェクトを取得します。

コードから/ storage/sdcard0 /パスを取得するためにEnvironment.getExternalStorageDirectory()を使用できないのはなぜですか?

パーミッションも追加する必要があります。

<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />

Uがあなたのソリューションを手に入れることを願っています...

12
Nayan Rath