Подтвердить что ты не робот

мы можем открыть папку загрузки через. Намерение?

На самом деле, мне нужно открыть папку загрузки по умолчанию из моего приложения. Является ли это возможным? Если да, то, пожалуйста, предоставьте некоторую ссылку.

Я могу получить путь к папке "Загрузка" с помощью:

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)

Любая помощь будет хорошо оценена.

4b9b3361

Ответ 1

Вы можете показать активность последних загрузок со следующим Intent

startActivity(new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS));

Доступно с API 9

Ответ 2

Решение Samsung:

public static void openDownloads(@NonNull Activity activity) {
    if (isSamsung()) {
        Intent intent = activity.getPackageManager()
                .getLaunchIntentForPackage("com.sec.android.app.myfiles");
        intent.setAction("samsung.myfiles.intent.action.LAUNCH_MY_FILES");
        intent.putExtra("samsung.myfiles.intent.extra.START_PATH", 
                getDownloadsFile().getPath());
        activity.startActivity(intent);
    }
    else activity.startActivity(new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS));
}

public static boolean isSamsung() {
    String manufacturer = Build.MANUFACTURER;
    if (manufacturer != null) return manufacturer.toLowerCase().equals("samsung");
    return false;
}

public static File getDownloadsFile() {
    return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
}

Обнаружено путем декомпиляции приложения Samsung Мои файлы и просмотра того, как MainActivity работает с намерениями.

public static final String MYFILES_NOTIFICATION_LAUNCH_INTENT_NAME = "samsung.myfiles.intent.action.LAUNCH_MY_FILES";
public static final String NOTIFICATION_START_PATH = "samsung.myfiles.intent.extra.START_PATH";
public static final String START_PATH = "FOLDERPATH";

if (Constant.MYFILES_NOTIFICATION_LAUNCH_INTENT_NAME.equals(intent.getAction())) {
                String startNotificationPath = intent.getStringExtra(Constant.NOTIFICATION_START_PATH);
                if (startNotificationPath != null) {
                    Bundle newArgument = new Bundle();
                    newArgument.putString(Constant.START_PATH, startNotificationPath);
                    if (new File(startNotificationPath).exists()) {
                        startBrowser(513, newArgument);
                    }
                }
                intent.removeExtra(Constant.NOTIFICATION_START_PATH);
            }

Ответ 3

У меня была похожая проблема с отображением файлов в разделе "Загрузки" в Samsung и LG, и я просто добавил "загруженный" параметр файла для DownloadManager и отображение файла в разделе "Загрузки":

  DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
        downloadManager.addCompletedDownload(file.getName(), file.getName(), true,
                "application", file.getPath(), file.length(), true);