![](/img/trans.png)
[英]how to store downloaded image in internal storage using Download Manager in android
[英]How to store image using Downloader Manager downloaded image name in external storage in android
您好,我正在使用Downloadmanager從網址下載圖片。 而且我可以完美地下載該圖像。但是我不知道它在哪里存儲圖像以供將來參考。
我想將其存儲在下載文件夾中。如何將其存儲在下載文件夾中。
這是我的代碼
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);
}
});
}
}
如何在帶有圖像名稱的下載文件夾中下載圖像。
提前坦斯克
為了將下載的圖像保存在downloads文件夾中,您需要編寫以下代碼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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.