我有一个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");
}
}
};
答案 0 :(得分:0)
当您的应用处于后台时,您不应该开始活动。当用户离开应用程序时,您的接收器可以取消注册。
相反,存储下载图像的信息,然后在应用程序恢复时进行检查。我不知道您的用例,但是,例如,您可以将此信息存储到SharedPreferences
并在应用恢复时进行检查。然后,您可以决定是否开始新活动。