2013-06-14 8 views
8

DownloadManagerを使用しているアンドロイドアプリを作っています。 私が作ったフォルダにファイルをダウンロードしたい。 しかし、このソースは動作しません。 そして、IllegalstateExceptionが発生します。 私は何ができますか?Android DownloadManager illegalstateexceptionディレクトリを作成できません

urlToDownload = Uri.parse(URL); 
List<String> pathSegments = urlToDownload.getPathSegments(); 
request = new DownloadManager.Request(urlToDownload); 
request.setTitle(Titlename); 
request.setDescription("MCPE STORE"); 
request.setDestinationInExternalPublicDir(
        Environment.getExternalStorageDirectory().getAbsolutePath() + 
        "/MCPE STORE", pathSegments.get(pathSegments.size()-1)); 

Environment.getExternalStoragePublicDirectory(
        Environment.getExternalStorageDirectory().getAbsolutePath() + 
        "/MCPE STORE").mkdir(); 
latestId = downloadManager.enqueue(request); 

答えて

10

どうすればよいですか?

the documentation for setDestinationInExternalPublicDir()を読むと、最初のパラメータが「ディレクトリタイプto pass to getExternalStoragePublicDirectory(String)」であることがわかります。これは、Environment.DIRECTORY_DOWNLOADSのようにEnvironmentクラスで定義されている定数の1つである必要があります。あなたは何かを渡していますが、これはサポートされていません。

+4

アプリの特別なフォルダにファイルをダウンロードしたい場合はどうすればよいですか?環境クラスで定義された定数フォルダにファイルをダウンロードし、ファイルをカット/ペーストしますか?何か案が? –

+0

@AliBehzadianNejadもし私があなたのことを正しければ、私は次のようにしました: request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS、File.separator + folderName + File.separator + filename); –

5

あなたがエミュレータを使用している場合、あなたはまた、あなたのmanifest.xml

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

を持っていることを確認しますが、SDカードストレージとそれを作成したことを確認してください。デフォルトでは作成されません。

関連する問題