ASTROがアクセスできるAndroidにmp3を保存するプログラムを作成しようとしています。私は/ sdcard/media/audioにファイルを保存しようとしています。 Logcat/DDMSで単一のエラーを起こさずにアプリケーションを実行しているにもかかわらず、ファイルはどこにも見つかりません。 WRITE_EXTERNAL_STORAGE権限(インターネットなど)を追加しました。そうではありません。Android:ファイルをsdcardに保存しますか?
アプリがsdcardにファイルを保存するための制限はありますか?
と呼ばれる方法:
public void findSong(View view) throws Exception {
edittext = (EditText) findViewById(R.id.edittext);
searchTerm = edittext.getText().toString();
String address;
address = getMusic(searchTerm);
ImageManager img = new ImageManager(); //calls ImageManager (below)
img.DownloadFromUrl(address, title + ".mp3");
}
ダウンロード方法:
private final String PATH = "/data/data"; //put the downloaded file here
public void DownloadFromUrl(String imageURL, String fileName) {
//this is the downloader method
try {
URL url = new URL(imageURL); //you can write here any link
File file = new File(fileName);
long startTime = System.currentTimeMillis();
Log.d("ImageManager", "download begining");
Log.d("ImageManager", "download url:" + url);
Log.d("ImageManager", "downloaded file name:" + fileName);
/* Open a connection to that URL. */
URLConnection ucon = url.openConnection();
/* Define InputStreams to read from the URLConnection. */
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
/* Read bytes to the Buffer until there is nothing more to read(-1). */
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current = 0;
while ((current = bis.read()) != -1) {
baf.append((byte) current);
}
/* Convert the Bytes read to a String. */
FileOutputStream fos = new FileOutputStream(PATH + file);
fos.write(baf.toByteArray());
fos.close();
Log.d("ImageManager", "download ready in"
+ ((System.currentTimeMillis() - startTime)/1000)
+ " sec");
} catch (IOException e) {
Log.d("ImageManager", "Error: " + e);
}
}
すべてのヘルプ高く評価しました。
あなたのonCreate()でダウンロードする必要のない静的コンテンツを含むダミーのテキストファイルを書き出すのと同じようなものを試してみてください。通常は良いアイデアではありませんが、ファイルを書き込む方法を理解したことを確認してください。 –
あなたのコードはあなたが '/ data/data'にファイルを置いていることを示していますが、あなたの質問は '/ sdcard/media/audio'に入れていると言います – Squonk