您好我正在使用Downloadmanager从Url下载图片。我完全设法下载该图像。但我不知道它存储图像的位置以供将来参考。
我想将它存储在下载文件夹中。这样做可以存储在下载文件夹中。
这是我的代码
public class MainActivity extends AppCompatActivity {
Button downld;
private DownloadManager dm;
private long enqueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
downld=(Button)findViewById(R.id.download);
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
long downloadId = intent.getLongExtra(
DownloadManager.EXTRA_DOWNLOAD_ID, 0);
DownloadManager.Query query = new DownloadManager.Query();
query.setFilterById(enqueue);
Cursor c = dm.query(query);
if (c.moveToFirst()) {
int columnIndex = c
.getColumnIndex(DownloadManager.COLUMN_STATUS);
if (DownloadManager.STATUS_SUCCESSFUL == c
.getInt(columnIndex)) {
String uriString = c
.getString(c
.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));
File ifdir1 = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "EPP");
if (!ifdir1.exists())
ifdir1.mkdirs();
File imagefile1 = new File(ifdir1.getPath() + File.separator +c.getString(c.getColumnIndex(DownloadManager.COLUMN_TITLE));
Uri tempuri = Uri.fromFile(imagefile1);
Log.v("Abhi", "" + c.getString(c.getColumnIndex(DownloadManager.COLUMN_TITLE)));
}
}
}
}
};
registerReceiver(receiver, new IntentFilter(
DownloadManager.ACTION_DOWNLOAD_COMPLETE));
downld.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
DownloadManager.Request request = new DownloadManager.Request(
Uri.parse("https://www.eprintpost.com/images/homepage/slider0.gif"));
enqueue = dm.enqueue(request);
}
});
}
}
如何在带有图像名称的下载文件夹中下载图像。
Thansk提前
答案 0 :(得分:2)
要将下载的图像保存在下载文件夹中,您需要编写以下代码DownloadManager.Request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName);
有关详情,请参阅以下代码
public static void downloadThroughManager(String imageUrl, Context context) {
File path = new File(imageUrl);
String fileName = path.getName();
final DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
Uri uri = Uri.parse(imageUrl);
DownloadManager.Request request = new DownloadManager.Request(uri);
request.setTitle(fileName);
request.setDescription(fileName);
request.setVisibleInDownloadsUi(true);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName);
long ref = downloadManager.enqueue(request);
IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
final BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
long downloadReference = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
Log.i("GenerateTurePDfAsync", "Download completed");
DownloadManager.Query query = new DownloadManager.Query();
query.setFilterById(downloadReference);
Cursor cur = downloadManager.query(query);
if (cur.moveToFirst()) {
int columnIndex = cur.getColumnIndex(DownloadManager.COLUMN_STATUS);
if (DownloadManager.STATUS_SUCCESSFUL == cur.getInt(columnIndex)) {
String uriString = cur.getString(cur.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));
Toast.makeText(context, "File has been downloaded successfully.", Toast.LENGTH_SHORT).show();
} else if (DownloadManager.STATUS_FAILED == cur.getInt(columnIndex)) {
int columnReason = cur.getColumnIndex(DownloadManager.COLUMN_REASON);
int reason = cur.getInt(columnReason);
switch(reason){
case DownloadManager.ERROR_FILE_ERROR:
Toast.makeText(context, "Download Failed.File is corrupt.", Toast.LENGTH_LONG).show();
break;
case DownloadManager.ERROR_HTTP_DATA_ERROR:
Toast.makeText(context, "Download Failed.Http Error Found.", Toast.LENGTH_LONG).show();
break;
case DownloadManager.ERROR_INSUFFICIENT_SPACE:
Toast.makeText(context, "Download Failed due to insufficient space in internal storage", Toast.LENGTH_LONG).show();
break;
case DownloadManager.ERROR_UNHANDLED_HTTP_CODE:
Toast.makeText(context, "Download Failed. Http Code Error Found.", Toast.LENGTH_LONG).show();
break;
case DownloadManager.ERROR_UNKNOWN:
Toast.makeText(context, "Download Failed.", Toast.LENGTH_LONG).show();
break;
case DownloadManager.ERROR_CANNOT_RESUME:
Toast.makeText(context, "ERROR_CANNOT_RESUME", Toast.LENGTH_LONG).show();
break;
case DownloadManager.ERROR_TOO_MANY_REDIRECTS:
Toast.makeText(context, "ERROR_TOO_MANY_REDIRECTS", Toast.LENGTH_LONG).show();
break;
case DownloadManager.ERROR_DEVICE_NOT_FOUND:
Toast.makeText(context, "ERROR_DEVICE_NOT_FOUND", Toast.LENGTH_LONG).show();
break;
}
}
}
}
};
context.registerReceiver(receiver, filter);
}