Magisk/app/src/main/java/com/topjohnwu/magisk/receivers/DownloadReceiver.java

57 lines
1.9 KiB
Java
Raw Normal View History

2016-09-26 10:45:34 +08:00
package com.topjohnwu.magisk.receivers;
import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.widget.Toast;
import com.topjohnwu.magisk.R;
public abstract class DownloadReceiver extends BroadcastReceiver {
public Context mContext;
public String mFilename;
long downloadID;
2016-09-26 10:45:34 +08:00
2016-09-28 14:50:26 +08:00
public DownloadReceiver() {}
2016-09-26 10:45:34 +08:00
@Override
public void onReceive(Context context, Intent intent) {
mContext = context;
DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
String action = intent.getAction();
if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
DownloadManager.Query query = new DownloadManager.Query();
query.setFilterById(downloadID);
Cursor c = downloadManager.query(query);
if (c.moveToFirst()) {
int columnIndex = c.getColumnIndex(DownloadManager.COLUMN_STATUS);
int status = c.getInt(columnIndex);
switch (status) {
case DownloadManager.STATUS_SUCCESSFUL:
2016-09-27 15:51:38 +08:00
Uri uri = Uri.parse(c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI)));
task(uri);
2016-09-26 10:45:34 +08:00
break;
default:
Toast.makeText(context, R.string.download_file_error, Toast.LENGTH_LONG).show();
break;
}
context.unregisterReceiver(this);
}
2016-11-21 01:33:12 +08:00
c.close();
2016-09-26 10:45:34 +08:00
}
}
public void setDownloadID(long id) {
downloadID = id;
}
public void setFilename(String filename) {
mFilename = filename;
}
2016-11-23 22:38:15 +08:00
public abstract void task(Uri uri);
2016-09-26 10:45:34 +08:00
}