次のコードで MalformedURLexception が発生していますが、原因がわかりません。
public void down(String url)
{ try {
URL url1 = new URL(url);
HttpURLConnection urlConnection = (HttpURLConnection) url1.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.connect();
File SDCardRoot = Environment.getExternalStorageDirectory();
//create a new file, specifying the path, and the filename
//which we want to save the file as.
File file = new File(SDCardRoot,"somefile.ext");
FileOutputStream fileOutput = new FileOutputStream(file);
InputStream inputStream = urlConnection.getInputStream();
int totalSize = urlConnection.getContentLength();
int downloadedSize = 0;
byte[] buffer = new byte[1024];
int bufferLength = 0; //used to store a temporary size of the buffer
while ( (bufferLength = inputStream.read(buffer)) > 0 ) {
fileOutput.write(buffer, 0, bufferLength);
//add up the size so we know how much is downloaded
downloadedSize += bufferLength;
//report progress
}
fileOutput.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
不明なプロトコルと表示されます。コードが正しいサイズのファイルを出力する前に、読み取り部分が表示されるまで、接続はまったく問題ありません。また、ダウンロードしようとしているファイルには http://download12.aometin.com/blaa-blaaのような URL があります 。www を追加しようとすると、リクエストがリダイレクトを開始します。これは初心者かもしれないと思いますが、このファイルの名前を取得して、選択した名前ではなくその名前でファイルを保存する方法も知りたいです。
編集:プログラムは現在動作しています。ファイルの正しい名前を取得する方法を知る必要があります。そして、これをバックグラウンド プロセスにします。