[
https://issues.apache.org/jira/browse/CB-12107?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16261743#comment-16261743
]
ASF GitHub Bot commented on CB-12107:
-------------------------------------
maverickmishra closed pull request #165: CB-12107: (android) Trigger media
scanner after downloading a file in…
URL: https://github.com/apache/cordova-plugin-file-transfer/pull/165
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git a/src/android/FileTransfer.java b/src/android/FileTransfer.java
index f9c2037..9b80891 100644
--- a/src/android/FileTransfer.java
+++ b/src/android/FileTransfer.java
@@ -62,8 +62,10 @@ Licensed to the Apache Software Foundation (ASF) under one
import org.json.JSONException;
import org.json.JSONObject;
+import android.content.Intent;
import android.net.Uri;
import android.os.Build;
+import android.os.Environment;
import android.webkit.CookieManager;
public class FileTransfer extends CordovaPlugin {
@@ -914,6 +916,11 @@ public void run() {
LOG.d(LOG_TAG, "Saved file: " + target);
+ String path = targetUri.getPath();
+ if( isPublicDirectory( path ) ) {
+ Intent intent = new
Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, targetUri);
+ cordova.getActivity().sendBroadcast(intent);
+ }
// create FileEntry object
Class webViewClass = webView.getClass();
@@ -1025,4 +1032,24 @@ public void run() {
});
}
}
+
+ /**
+ * Checks if path belongs to a public directory described by
cordova-plugin-file
+ * https://github.com/apache/cordova-plugin-file#android-file-system-layout
+ * @param absolutePath
+ * @return boolean
+ */
+ private boolean isPublicDirectory(String absolutePath) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ // Lollipop has a bug where SD cards are null.
+ for (File f : webView.getContext().getExternalMediaDirs()) {
+ if(f != null && absolutePath.startsWith(f.getAbsolutePath())) {
+ return true;
+ }
+ }
+ }
+
+ String extPath =
Environment.getExternalStorageDirectory().getAbsolutePath();
+ return absolutePath.startsWith(extPath);
+ }
}
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> Downloading a file into public folder does not show up on MTP
> -------------------------------------------------------------
>
> Key: CB-12107
> URL: https://issues.apache.org/jira/browse/CB-12107
> Project: Apache Cordova
> Issue Type: Improvement
> Components: cordova-plugin-file-transfer (DEPRECATED)
> Environment: Nexus 4 and Windows 10
> Reporter: Beat Grabe
> Assignee: Joe Bowser
> Labels: Android
>
> Using the cordova-plugin-file-transfer to download a file from external url
> works as aspected. But when you want to see the file on Windows by using MTP
> when the device is connected via USB the file does not show up. Same
> behaviour on android photos or gallery application when you want to download
> an image file. The Plugin should be broadcasting
> "ACTION_MEDIA_SCANNER_SCAN_FILE" on the downloaded file to see it immediately.
> I will submit a PR on GitHub for a tested fix, which was inspired by a
> similar issue on the cordova-plugin-file
> ([CB-7487|https://issues.apache.org/jira/browse/CB-7487] &&
> [CB-8663|https://issues.apache.org/jira/browse/CB-8663]).
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]