mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-08-03 10:46:53 -04:00
Change saved picture path to download folder
This commit is contained in:
parent
7855822be9
commit
5975dcd641
@ -268,7 +268,7 @@ class KiwixReaderFragment : CoreReaderFragment() {
|
||||
override fun createWebView(attrs: AttributeSet): ToolbarScrollingKiwixWebView {
|
||||
return ToolbarScrollingKiwixWebView(
|
||||
requireContext(), this, attrs, activityMainRoot as ViewGroup, videoView,
|
||||
CoreWebViewClient(this, zimReaderContainer),
|
||||
CoreWebViewClient(this, zimReaderContainer, sharedPreferenceUtil),
|
||||
toolbarContainer, bottomToolbar, sharedPreferenceUtil = sharedPreferenceUtil,
|
||||
parentNavigationBar = requireActivity().bottom_nav_view
|
||||
)
|
||||
|
@ -762,7 +762,7 @@ public abstract class CoreReaderFragment extends BaseFragment
|
||||
if (activityMainRoot != null) {
|
||||
return new ToolbarScrollingKiwixWebView(
|
||||
getActivity(), this, attrs, (ViewGroup) activityMainRoot, videoView,
|
||||
new CoreWebViewClient(this, zimReaderContainer),
|
||||
new CoreWebViewClient(this, zimReaderContainer, sharedPreferenceUtil),
|
||||
toolbarContainer, bottomToolbar,
|
||||
sharedPreferenceUtil);
|
||||
} else {
|
||||
|
@ -34,6 +34,7 @@ import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import org.kiwix.kiwixmobile.core.CoreApp;
|
||||
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer;
|
||||
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil;
|
||||
import org.kiwix.kiwixmobile.core.utils.files.FileUtils;
|
||||
|
||||
import static org.kiwix.kiwixmobile.core.reader.ZimFileReader.CONTENT_PREFIX;
|
||||
@ -47,6 +48,7 @@ public class CoreWebViewClient extends WebViewClient {
|
||||
}};
|
||||
protected final WebViewCallback callback;
|
||||
protected final ZimReaderContainer zimReaderContainer;
|
||||
private final SharedPreferenceUtil sharedPreferenceUtil;
|
||||
private static String[] LEGACY_CONTENT_PREFIXES = new String[] {
|
||||
"zim://content/",
|
||||
Uri.parse("content://" + CoreApp.getInstance().getPackageName() + ".zim.base/").toString()
|
||||
@ -54,9 +56,12 @@ public class CoreWebViewClient extends WebViewClient {
|
||||
private String urlWithAnchor;
|
||||
|
||||
public CoreWebViewClient(
|
||||
WebViewCallback callback, ZimReaderContainer zimReaderContainer) {
|
||||
WebViewCallback callback,
|
||||
ZimReaderContainer zimReaderContainer,
|
||||
SharedPreferenceUtil sharedPreferenceUtil) {
|
||||
this.callback = callback;
|
||||
this.zimReaderContainer = zimReaderContainer;
|
||||
this.sharedPreferenceUtil = sharedPreferenceUtil;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -102,7 +107,8 @@ public class CoreWebViewClient extends WebViewClient {
|
||||
private boolean handleEpubAndPdf(String url) {
|
||||
String extension = MimeTypeMap.getFileExtensionFromUrl(url);
|
||||
if (DOCUMENT_TYPES.containsKey(extension)) {
|
||||
File savedFile = FileUtils.downloadFileFromUrl(url, null, zimReaderContainer);
|
||||
File savedFile =
|
||||
FileUtils.downloadFileFromUrl(url, null, zimReaderContainer, sharedPreferenceUtil);
|
||||
if (savedFile != null && savedFile.exists()) {
|
||||
Context context = CoreApp.getInstance();
|
||||
Uri uri = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N
|
||||
|
@ -111,7 +111,7 @@ open class KiwixWebView @SuppressLint("SetJavaScriptEnabled") constructor(
|
||||
val saveMenu =
|
||||
menu.add(0, 1, 0, resources.getString(R.string.save_media))
|
||||
saveMenu.setOnMenuItemClickListener {
|
||||
val msg = SaveHandler(zimReaderContainer).obtainMessage()
|
||||
val msg = SaveHandler(zimReaderContainer, sharedPreferenceUtil).obtainMessage()
|
||||
requestFocusNodeHref(msg)
|
||||
true
|
||||
}
|
||||
@ -141,7 +141,10 @@ open class KiwixWebView @SuppressLint("SetJavaScriptEnabled") constructor(
|
||||
callback.webViewPageChanged(page, pages)
|
||||
}
|
||||
|
||||
internal class SaveHandler(private val zimReaderContainer: ZimReaderContainer) :
|
||||
internal class SaveHandler(
|
||||
private val zimReaderContainer: ZimReaderContainer,
|
||||
private val sharedPreferenceUtil: SharedPreferenceUtil
|
||||
) :
|
||||
Handler() {
|
||||
|
||||
@SuppressWarnings("NestedBlockDepth")
|
||||
@ -149,7 +152,8 @@ open class KiwixWebView @SuppressLint("SetJavaScriptEnabled") constructor(
|
||||
val url = msg.data["url"] as? String
|
||||
val src = msg.data["src"] as? String
|
||||
if (url != null || src != null) {
|
||||
val savedFile = FileUtils.downloadFileFromUrl(url, src, zimReaderContainer)
|
||||
val savedFile =
|
||||
FileUtils.downloadFileFromUrl(url, src, zimReaderContainer, sharedPreferenceUtil)
|
||||
savedFile?.let {
|
||||
instance.toast(instance.getString(R.string.save_media_saved, it.name))
|
||||
} ?: run {
|
||||
|
@ -35,6 +35,7 @@ import org.kiwix.kiwixmobile.core.entity.LibraryNetworkEntity.Book
|
||||
import org.kiwix.kiwixmobile.core.extensions.get
|
||||
import org.kiwix.kiwixmobile.core.extensions.toast
|
||||
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer
|
||||
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
|
||||
import java.io.BufferedReader
|
||||
import java.io.File
|
||||
import java.io.IOException
|
||||
@ -305,13 +306,22 @@ object FileUtils {
|
||||
@JvmStatic fun downloadFileFromUrl(
|
||||
url: String?,
|
||||
src: String?,
|
||||
zimReaderContainer: ZimReaderContainer
|
||||
zimReaderContainer: ZimReaderContainer,
|
||||
sharedPreferenceUtil: SharedPreferenceUtil
|
||||
): File? {
|
||||
val fileName = getDecodedFileName(url, src)
|
||||
var root =
|
||||
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
|
||||
if (CoreApp.instance.externalMediaDirs.isNotEmpty()) {
|
||||
root = CoreApp.instance.externalMediaDirs[0]
|
||||
var root: File? = null
|
||||
if (sharedPreferenceUtil.isPlayStoreBuildWithAndroid11OrAbove()) {
|
||||
if (CoreApp.instance.externalMediaDirs.isNotEmpty()) {
|
||||
root = CoreApp.instance.externalMediaDirs[0]
|
||||
}
|
||||
} else {
|
||||
root =
|
||||
File(
|
||||
"${Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)}" +
|
||||
"/org.kiwix"
|
||||
)
|
||||
if (!root.exists()) root.mkdir()
|
||||
}
|
||||
val fileToSave = sequence {
|
||||
yield(File(root, fileName))
|
||||
@ -326,7 +336,7 @@ object FileUtils {
|
||||
val source = if (url == null) Uri.parse(src) else Uri.parse(url)
|
||||
return try {
|
||||
zimReaderContainer.load("$source", emptyMap()).data.use { inputStream ->
|
||||
fileToSave.outputStream().use { inputStream.copyTo(it) }
|
||||
fileToSave.outputStream().use(inputStream::copyTo)
|
||||
}
|
||||
fileToSave
|
||||
} catch (e: IOException) {
|
||||
|
@ -14,7 +14,7 @@
|
||||
<string name="menu_wifi_hotspot">WiFi Hotspot</string>
|
||||
<string name="save_media">Save Media</string>
|
||||
<string name="save_media_error">An error occurred when trying to save the media!</string>
|
||||
<string name="save_media_saved">Saved media as %s to Android/media/org.kiwix…/</string>
|
||||
<string name="save_media_saved">Saved media as %s to Downloads/org.kiwix…/</string>
|
||||
<string name="search_label">Search</string>
|
||||
<string name="choose_file" tools:keep="@string/choose_file">Select a Content File (*.zim)</string>
|
||||
<string name="open_in_new_tab">Open link in new tab?</string>
|
||||
|
Loading…
x
Reference in New Issue
Block a user