【问题标题】:Open a Directory of Downloads by Clicking the Notification通过单击通知打开下载目录
【发布时间】:2016-05-31 04:40:17
【问题描述】:

您好,我是 Android 开发的新手。我想做的是:

  1. 使用 URL 下载文件
  2. 放在我的下载中
  3. 使用 IntentService 中的下载管理器进行下载
  4. 下载完成后,我会显示一个通知
  5. 通知通知用户下载完成

问题是我希望用户点击生成的通知,然后打开下载文件夹

我一直在尝试的是:

public void sendNotification() {

        // Use NotificationCompat.Builder to set up our notification.
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);

        //icon appears in device notification bar and right hand corner of notification
        builder.setSmallIcon(R.drawable.downloaded);

        // This intent is fired when notification is clicked
        *****Here I want the user if clicks this notification the Download Folder should Open up*****
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);

        Uri imgUri = Uri.fromFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS));

        intent.setDataAndType(imgUri, "file/*");
        startActivity(intent);

        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);

        // Set the intent that will fire when the user taps the notification.
        builder.setContentIntent(pendingIntent);

        // Large icon appears on the left of the notification
        builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.downloaded));

        // Content title, which appears in large type at the top of the notification
        builder.setContentTitle("Complete");

        // Content text, which appears in smaller text below the title
        builder.setContentText("Your Download has been completed Successfully!");

        //set the subtext
        builder.setSubText("Click to open the Downloads Folder!");
        NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        // Will display the notification in the notification bar
        notificationManager.notify(NOTIFICATION_ID, builder.build());
    }

当我点击它时,什么也没发生!

我是 Android 新手,请检查我的错误,以便我了解更多信息。 这不是作业,我正在自学! 提前致谢。

【问题讨论】:

标签: android android-intent android-notifications


【解决方案1】:

我是这样做的:

// Create an explicit intent for an Activity in your app
    val intent = Intent(DownloadManager.ACTION_VIEW_DOWNLOADS).apply {
        flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
    }
    val pendingIntent: PendingIntent = PendingIntent.getActivity(context, 0, intent, 0)
    builder = NotificationCompat.Builder(context!!, CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_file_word)
        .setContentTitle("Descarga completa")
        .setContentText("Descarga de archivo completa")
        .setPriority(NotificationCompat.PRIORITY_DEFAULT).setContentIntent(pendingIntent)
        .setAutoCancel(true)

【讨论】:

    【解决方案2】:

    这样试试

        Uri selectedUri = Uri.parse(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS));
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(selectedUri, "resource/folder");
    
        if (intent.resolveActivityInfo(getPackageManager(), 0) != null){
                startActivity(intent);
            }
            else 
            {
              // if you reach this place, it means there is no any file 
              // explorer app installed on your device
            }
    

    View this thread

    【讨论】:

    • 点击时看看 logcat 在说什么?
    • 尝试添加intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    【解决方案3】:

    检查一下

    public void openFolder()
    {
      Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
      Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getPath()+ "/myFolder/");
      intent.setDataAndType(uri, "text/csv");
      startActivity(Intent.createChooser(intent, "Open folder"));
    }
    

    【讨论】:

    • 他不是在寻找 cvs 或文本文件吗?
    • 同样的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 2017-04-04
    • 1970-01-01
    相关资源
    最近更新 更多