-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Description
The Bibledit app for Android used to have file download functionality.
It could download the exported USFM.zip and the like.
Since the app is rewritten, in Kotlin, this download functionality still needs to be made to work in Kotlin too.
Here is the code for the file download functionality in Java
public class MainActivity extends AppCompatActivity
{
private ValueCallback<Uri> myUploadMessage;
private final static int FILECHOOSER_RESULTCODE = 1;
private final static int LOCATION_PERMISSION_REQUEST_CODE = 2;
private final static int REQUEST_CHECK_SETTINGS = 3;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == FILECHOOSER_RESULTCODE) {
if (myUploadMessage == null) return;
Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData();
myUploadMessage.onReceiveValue(result);
myUploadMessage = null;
}
}
private void StartWebView (String PageToOpen)
{
// Enable file download.
webview.setDownloadListener(new DownloadListener() {
@Override
public void onDownloadStart (String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
DownloadManager.Request request = new DownloadManager.Request (Uri.parse (url));
request.allowScanningByMediaScanner();
// Notification once download is completed.
request.setNotificationVisibility (DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
Uri uri = Uri.parse (url);
String filename = uri.getLastPathSegment ();
request.setDestinationInExternalPublicDir (Environment.DIRECTORY_DOWNLOADS, filename);
DownloadManager dm = (DownloadManager) getSystemService (DOWNLOAD_SERVICE);
dm.enqueue (request);
// Notification that the file is being downloaded.
Toast.makeText (getApplicationContext(), "Downloading file", Toast.LENGTH_LONG).show ();
}
});
// Set high quality client.
webview.setWebChromeClient(new WebChromeClient() {
// The undocumented method overrides.
// The compiler fails if you try to put @Override here.
// It needs three interfaces to handle the various versions of Android.
public void openFileChooser(ValueCallback<Uri> uploadMsg) {
myUploadMessage = uploadMsg;
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
MainActivity.this.startActivityForResult(Intent.createChooser(intent, "File Chooser"), FILECHOOSER_RESULTCODE);
}
public void openFileChooser( ValueCallback uploadMsg,
String acceptType) {
myUploadMessage = uploadMsg;
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
MainActivity.this.startActivityForResult(Intent.createChooser(intent, "File Browser"), FILECHOOSER_RESULTCODE);
}
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
myUploadMessage = uploadMsg;
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
MainActivity.this.startActivityForResult (Intent.createChooser (intent, "File Chooser"), MainActivity.FILECHOOSER_RESULTCODE);
}
});
}
}
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels