Java 是否使用Android TV下载管理器显示下载失败通知?

Java 是否使用Android TV下载管理器显示下载失败通知?,java,android,Java,Android,一、 我正在尝试使用Android Studio构建我的第一个应用程序。它是针对Android TV的。我不知道如何在下载失败时通知用户。 这是一款Android电视应用程序,因此没有状态栏来显示下载管理器的进度。代码按原样显示任何按钮点击的结果,包括mainactivity2的结果。然而,很明显,无论成功与否,在收到“操作”\u“下载”\u“完成”时,它都会显示相同的消息。 我尝试过很多方法,但大多数人认为我对编码的掌握比我更好,或者有很多错误我没有足够的知识去理解,所以我无法将它们结合起来。

一、 我正在尝试使用Android Studio构建我的第一个应用程序。它是针对Android TV的。我不知道如何在下载失败时通知用户。 这是一款Android电视应用程序,因此没有状态栏来显示下载管理器的进度。代码按原样显示任何按钮点击的结果,包括mainactivity2的结果。然而,很明显,无论成功与否,在收到“操作”\u“下载”\u“完成”时,它都会显示相同的消息。 我尝试过很多方法,但大多数人认为我对编码的掌握比我更好,或者有很多错误我没有足够的知识去理解,所以我无法将它们结合起来。 我确实设法让一个进度条工作,但由于文件小于1兆字节,而且只有在下载失败时才提供一个空的进度条,所以它不太理想。 我希望有人能帮我展示成功或失败

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。