下载管理器

时间:2016-06-10 23:14:38

标签: android broadcastreceiver

我有一个BroadcastReceiver,它会监听下载完成操作,以便在下载完成时打开文件。

我的问题是用户可能会下载文件然后最小化屏幕,然后取消注册BroadcastReceiver,因此下载完成后文件不会自动打开。

如何设置独立BroadcastReceiver以便即使应用程序停止/销毁也会打开图像。我无法弄清楚如何让它听取下载完成动作。

private BroadcastReceiver downloadReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        long referenceId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
        if (downloadReference == referenceId) {
            DownloadManager.Query query = new DownloadManager.Query();
            query.setFilterById(referenceId);
            Cursor cursor = downloadManager.query(query);
            if (cursor.moveToFirst()) {
                int status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS));
                if (status == DownloadManager.STATUS_SUCCESSFUL) {
                    Intent intentpic = new Intent();
                    intentpic.setAction(android.content.Intent.ACTION_VIEW);
                    intentpic.setDataAndType(Uri.fromFile(getActivity().getExternalFilesDir("/update/asd.jpg")), "image/*");
                    startActivity(intentpic);
                    if(receiverRegistered) {
                        getActivity().unregisterReceiver(downloadReceiver);
                    }
                }
            }
            cursor.close();
            Log.i(TAG, "Downloading of data just finished");
        }
    }
};

1 个答案:

答案 0 :(得分:0)

当您的应用处于后台时,您不应该开始活动。当用户离开应用程序时,您的接收器可以取消注册。

相反,存储下载图像的信息,然后在应用程序恢复时进行检查。我不知道您的用例,但是,例如,您可以将此信息存储到SharedPreferences并在应用恢复时进行检查。然后,您可以决定是否开始新活动。