@ -9,9 +9,11 @@ import android.os.Environment;
@@ -9,9 +9,11 @@ import android.os.Environment;
import android.os.Handler ;
import android.os.Looper ;
import android.support.annotation.NonNull ;
import android.util.Log ;
import android.webkit.MimeTypeMap ;
import android.webkit.URLUtil ;
import com.anthonycr.bonsai.Schedulers ;
import com.squareup.otto.Bus ;
import java.io.IOException ;
@ -32,14 +34,12 @@ import acr.browser.lightning.bus.BrowserEvents;
@@ -32,14 +34,12 @@ import acr.browser.lightning.bus.BrowserEvents;
* /
class FetchUrlMimeType extends Thread {
private final Context mContext ;
private static final String TAG = FetchUrlMimeType . class . getSimpleName ( ) ;
private final Context mContext ;
private final DownloadManager . Request mRequest ;
private final String mUri ;
private final String mCookies ;
private final String mUserAgent ;
public FetchUrlMimeType ( Context context , DownloadManager . Request request , String uri ,
@ -109,10 +109,30 @@ class FetchUrlMimeType extends Thread {
@@ -109,10 +109,30 @@ class FetchUrlMimeType extends Thread {
// Start the download
DownloadManager manager = ( DownloadManager ) mContext
. getSystemService ( Context . DOWNLOAD_SERVICE ) ;
try {
manager . enqueue ( mRequest ) ;
Handler handler = new Handler ( Looper . getMainLooper ( ) ) ;
} catch ( IllegalArgumentException e ) {
// Probably got a bad URL or something
Log . e ( TAG , "Unable to enqueue request" , e ) ;
Schedulers . main ( ) . execute ( new Runnable ( ) {
@Override
public void run ( ) {
eventBus . post ( new BrowserEvents . ShowSnackBarMessage ( R . string . cannot_download ) ) ;
}
} ) ;
} catch ( SecurityException e ) {
// TODO write a download utility that downloads files rather than rely on the system
// because the system can only handle Environment.getExternal... as a path
Schedulers . main ( ) . execute ( new Runnable ( ) {
@Override
public void run ( ) {
eventBus . post ( new BrowserEvents . ShowSnackBarMessage ( R . string . problem_location_download ) ) ;
}
} ) ;
}
final String file = filename ;
handler . post ( new Runnable ( ) {
Schedulers . main ( ) . execute ( new Runnable ( ) {
@Override
public void run ( ) {
eventBus . post ( new BrowserEvents . ShowSnackBarMessage ( mContext . getString ( R . string . download_pending ) + ' ' + file ) ) ;