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