ファイルをダウンロードして、ユーザのDownloads
フォルダに保存することを目的としたクラスがあります。正しいアクセス許可が宣言されています。このクラスが呼び出し元のアクティビティに送り返しているブロードキャストに基づいて、ファイルがダウンロード中であることがわかります。しかし、これが完了すると、ファイルはどこにでも保存されているように見えますが、確かにDownloads
フォルダには保存されていません。ダウンロードフォルダにファイルをダウンロードしていません
なぜこのフォルダへのアクセスが得られないのか、それとも正しく保存されないのか分かりますか?ありがとうございました。
public class FileDownloader extends IntentService {
public static final String FILENAME = "filename";
public static final String FULLPATH = "fullpath";
public static final String FILESIZE = "filesize";
public static final String RECEIVER = "receiver";
public static String broadcastReceiver;
public FileDownloader() {
super("DownloadFile");
}
protected void onHandleIntent(Intent intent) {
String urlPath = intent.getStringExtra(FULLPATH);
String filename = intent.getStringExtra(FILENAME);
int filesize = intent.getIntExtra(FILESIZE, 1);
broadcastReceiver = intent.getStringExtra(RECEIVER);
// THIS IS WHERE I AM ATTEMPTING TO CREATE A PATH TO THE DOWNLOADS FOLDER
File outputFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), filename);
if (outputFile.exists()) {
outputFile.delete();
}
downloadFile(urlPath, outputFile, filesize);
}
private void downloadFile(String urlPath, File outputFile, int filesize) {
Intent intent = new Intent(broadcastReceiver);
URL url;
try {
url = new URL(urlPath);
InputStream is = url.openStream();
OutputStream os = new FileOutputStream(outputFile);
byte[] b = new byte[2048];
int length;
int bytes_downloaded = 0;
while ((length = is.read(b)) != -1) {
os.write(b, 0, length);
bytes_downloaded += length;
final int progress = (int) ((bytes_downloaded * 100l)/filesize);
String message = Integer.toString(progress) + "%";
intent.putExtra("message", message);
LocalBroadcastManager.getInstance(TexasApp.getContext()).sendBroadcast(intent);
}
intent.putExtra("message", "done");
LocalBroadcastManager.getInstance(TexasApp.getContext()).sendBroadcast(intent);
is.close();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
そして、ちょうど場合には、これは私のマニフェストにある:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
最後にひとつの事:私は私が正しくAndroidの6許可をナビゲートしていますことを知っているが、そう、これはに関連していないと仮定してくださいこの問題。
ありがとうございました!
"ファイルはどこにも保存されていないようですが、確かにダウンロードフォルダには保存されていません" - これはどのように判断していますか? – CommonsWare
私は、ダウンロードフォルダとパスの両方で自分のファイルマネージャを見ています: "device storage \ Android \ data \ com.mydomain.myapp"。他のダウンロード方法を使用して、これは以前にファイルが保存されていた場所です。私はそれがどこか他の場所に落ちていないことを保証することはできませんが、もしあれば私は驚くでしょう。 – Alex
また、ダウンロードされたファイルは通知されず、ダウンロード履歴には何も表示されません。 – Alex