Java 是否使用Android TV下载管理器显示下载失败通知?
一、 我正在尝试使用Android Studio构建我的第一个应用程序。它是针对Android TV的。我不知道如何在下载失败时通知用户。 这是一款Android电视应用程序,因此没有状态栏来显示下载管理器的进度。代码按原样显示任何按钮点击的结果,包括mainactivity2的结果。然而,很明显,无论成功与否,在收到“操作”\u“下载”\u“完成”时,它都会显示相同的消息。 我尝试过很多方法,但大多数人认为我对编码的掌握比我更好,或者有很多错误我没有足够的知识去理解,所以我无法将它们结合起来。 我确实设法让一个进度条工作,但由于文件小于1兆字节,而且只有在下载失败时才提供一个空的进度条,所以它不太理想。 我希望有人能帮我展示成功或失败Java 是否使用Android TV下载管理器显示下载失败通知?,java,android,Java,Android,一、 我正在尝试使用Android Studio构建我的第一个应用程序。它是针对Android TV的。我不知道如何在下载失败时通知用户。 这是一款Android电视应用程序,因此没有状态栏来显示下载管理器的进度。代码按原样显示任何按钮点击的结果,包括mainactivity2的结果。然而,很明显,无论成功与否,在收到“操作”\u“下载”\u“完成”时,它都会显示相同的消息。 我尝试过很多方法,但大多数人认为我对编码的掌握比我更好,或者有很多错误我没有足够的知识去理解,所以我无法将它们结合起来。
IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(MainActivity.this, "Your download is complete.", Toast.LENGTH_SHORT).show();
}
};
@Override
public void onClick(View view) {
registerReceiver(receiver, filter);
int id = view.getId();
if (id == R.id.myfile) {
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
DownloadManager.Request request1 = new DownloadManager.Request(
Uri.parse("https://myurl.zip"));
request1.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "/mydir/myfile.zip");
dm.enqueue(request1);
Toast.makeText(MainActivity.this, "Your chose myfile.zip", Toast.LENGTH_SHORT).show();
} else if (id == R.id.myfile2) {
DownloadManager dm;
dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
DownloadManager.Request request2 = new DownloadManager.Request(
Uri.parse("https://myurl2.zip"));
request2.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "/mydir2/myfile2.zip");
dm.enqueue(request2);
Toast.makeText(MainActivity.this, "You chose myfile2.zip.", Toast.LENGTH_SHORT).show();
}
}
}
我想我应该把我的问题的解决方案贴出来,希望它能帮助有类似情况的人。 我最终放弃了DownloadManager,转而选择了来自微软的快速Android网络库。 我确信有一种方法可以通过DownloadManager实现我的目标,但这对我来说很有效。 下面是下载文件时接收成功或失败toast的示例。在本例中,进度状态为未使用
@Override
public void onClick(View view) {
int id = view.getId();
if (id == R.id.example) {
Toast.makeText(MainActivity.this, "You chose The example.", Toast.LENGTH_SHORT).show();
AndroidNetworking.download("https://example.github.io/repository.0.3.1.zip",Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath() + "/example", "/repository.0.3.1.zip")
.setTag("Download")
.setPriority(Priority.MEDIUM)
.build()
.setDownloadProgressListener(new DownloadProgressListener() {
@Override
public void onProgress(long bytesDownloaded, long totalBytes) {
}
})
.startDownload(new DownloadListener() {
@Override
public void onDownloadComplete() {
Toast.makeText(MainActivity.this, "The download is complete.", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(ANError error) {
Toast.makeText(MainActivity.this, "The download failed.", Toast.LENGTH_SHORT).show();
}
});
您没有对onReceive()的intent参数执行任何操作。Try
long downloadId=intent.getLongExtra(DownloadManager.EXTRA\u DOWNLOAD\u ID,0)代码>谢谢你的建议,我正在尝试使用downloadId。