From 6ab368132af8b3aeb8dec1cd7cb40ac59ff8d56f Mon Sep 17 00:00:00 2001 From: ocean <503259349@qq.com> Date: Fri, 7 Nov 2025 18:13:18 +0800 Subject: [PATCH] update --- app/src/main/AndroidManifest.xml | 9 +- .../com/all/pdfreader/pro/app/sp/AppStore.kt | 5 + .../pdfreader/pro/app/ui/act/FAQActivity.kt | 75 ++ .../pdfreader/pro/app/ui/act/MainActivity.kt | 45 +- .../pro/app/ui/act/PrivacyPolicyActivity.kt | 129 +++ .../all/pdfreader/pro/app/util/AppUtils.kt | 40 + app/src/main/res/drawable/back_black.xml | 16 +- app/src/main/res/drawable/drw_faq_item_bg.xml | 8 + .../res/drawable/icon_arrow_down_gray.xml | 9 + .../main/res/drawable/icon_arrow_up_gray.xml | 9 + app/src/main/res/drawable/icon_faq.xml | 9 + .../main/res/drawable/icon_privacy_policy.xml | 9 + app/src/main/res/drawable/icon_screen_on.xml | 9 + .../main/res/layout/act_privacy_policy.xml | 71 ++ app/src/main/res/layout/activity_faq.xml | 252 +++++ app/src/main/res/layout/activity_main.xml | 940 +++++++++++------- .../main/res/layout/activity_pdf_merge.xml | 11 +- .../main/res/layout/activity_pdf_picker.xml | 11 +- .../main/res/layout/activity_pdf_split.xml | 11 +- .../main/res/layout/activity_pdf_to_img.xml | 11 +- app/src/main/res/layout/activity_pdf_view.xml | 10 +- .../main/res/layout/activity_search_pdf.xml | 15 +- app/src/main/res/layout/dialog_view_model.xml | 4 +- app/src/main/res/values/strings.xml | 15 + 24 files changed, 1298 insertions(+), 425 deletions(-) create mode 100644 app/src/main/java/com/all/pdfreader/pro/app/ui/act/FAQActivity.kt create mode 100644 app/src/main/java/com/all/pdfreader/pro/app/ui/act/PrivacyPolicyActivity.kt create mode 100644 app/src/main/res/drawable/drw_faq_item_bg.xml create mode 100644 app/src/main/res/drawable/icon_arrow_down_gray.xml create mode 100644 app/src/main/res/drawable/icon_arrow_up_gray.xml create mode 100644 app/src/main/res/drawable/icon_faq.xml create mode 100644 app/src/main/res/drawable/icon_privacy_policy.xml create mode 100644 app/src/main/res/drawable/icon_screen_on.xml create mode 100644 app/src/main/res/layout/act_privacy_policy.xml create mode 100644 app/src/main/res/layout/activity_faq.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8dce6eb..81f4f07 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -7,6 +7,7 @@ + @@ -112,7 +113,13 @@ android:screenOrientation="portrait" /> + + diff --git a/app/src/main/java/com/all/pdfreader/pro/app/sp/AppStore.kt b/app/src/main/java/com/all/pdfreader/pro/app/sp/AppStore.kt index 1e19282..b652593 100644 --- a/app/src/main/java/com/all/pdfreader/pro/app/sp/AppStore.kt +++ b/app/src/main/java/com/all/pdfreader/pro/app/sp/AppStore.kt @@ -44,6 +44,10 @@ class AppStore(context: Context) { key = IS_COLOR_INVERSION, defaultValue = false ) + var keepScreenOn: Boolean by store.boolean( + key = KEEP_SCREEN_ON,defaultValue = false + ) + companion object { private const val FILE_NAME = "prp_sp_name" private const val PERMISSIONS_DIALOG_PROMPT = "permissions_dialog_prompt" @@ -53,5 +57,6 @@ class AppStore(context: Context) { private const val IS_VERTICAL = "is_vertical" private const val IS_PAGE_FLING = "is_page_fling" private const val IS_COLOR_INVERSION = "is_color_inversion" + private const val KEEP_SCREEN_ON = "keep_screen_on" } } \ No newline at end of file diff --git a/app/src/main/java/com/all/pdfreader/pro/app/ui/act/FAQActivity.kt b/app/src/main/java/com/all/pdfreader/pro/app/ui/act/FAQActivity.kt new file mode 100644 index 0000000..b7bd21f --- /dev/null +++ b/app/src/main/java/com/all/pdfreader/pro/app/ui/act/FAQActivity.kt @@ -0,0 +1,75 @@ +package com.all.pdfreader.pro.app.ui.act + +import android.os.Bundle +import android.view.View +import android.widget.ImageView +import android.widget.TextView +import androidx.core.text.HtmlCompat +import com.all.pdfreader.pro.app.R +import com.all.pdfreader.pro.app.databinding.ActivityFaqBinding +import com.gyf.immersionbar.ImmersionBar + +class FAQActivity : BaseActivity() { + override val TAG: String = "FAQActivity" + + private lateinit var binding: ActivityFaqBinding + private var faqAboutApp1IsOpen = true + private var faqAboutApp2IsOpen = false + private var faqAboutApp3IsOpen = false + private var faqFileView1IsOpen = false + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityFaqBinding.inflate(layoutInflater) + setContentView(binding.root) + ImmersionBar.with(this).statusBarView(binding.view).statusBarDarkFont(true) + .navigationBarColor(R.color.white).init() + initView() + } + + private fun initView() { + updateViewIsOpen(faqAboutApp1IsOpen, binding.faqAboutApp1DesTv, binding.faqAboutApp1Iv) + binding.backBtn.setOnClickListener { + finish() + } + binding.faqAboutApp1DesTv.text = HtmlCompat.fromHtml( + getString(R.string.faq_about_app1_des), HtmlCompat.FROM_HTML_MODE_LEGACY + ) + binding.faqAboutApp2DesTv.text = HtmlCompat.fromHtml( + getString(R.string.faq_about_app2_des), HtmlCompat.FROM_HTML_MODE_LEGACY + ) + binding.faqAboutApp3DesTv.text = HtmlCompat.fromHtml( + getString(R.string.faq_about_app3_des), HtmlCompat.FROM_HTML_MODE_LEGACY + ) + binding.faqFileViewing1DscTv.text = HtmlCompat.fromHtml( + getString(R.string.faq_file_viewing1_des), HtmlCompat.FROM_HTML_MODE_LEGACY + ) + + binding.aboutApp1Btn.setOnClickListener { + faqAboutApp1IsOpen = !faqAboutApp1IsOpen + updateViewIsOpen(faqAboutApp1IsOpen, binding.faqAboutApp1DesTv, binding.faqAboutApp1Iv) + } + binding.aboutApp2Btn.setOnClickListener { + faqAboutApp2IsOpen = !faqAboutApp2IsOpen + updateViewIsOpen(faqAboutApp2IsOpen, binding.faqAboutApp2DesTv, binding.faqAboutApp2Iv) + } + binding.aboutApp3Btn.setOnClickListener { + faqAboutApp3IsOpen = !faqAboutApp3IsOpen + updateViewIsOpen(faqAboutApp3IsOpen, binding.faqAboutApp3DesTv, binding.faqAboutApp3Iv) + } + binding.fileViewing1Btn.setOnClickListener { + faqFileView1IsOpen = !faqFileView1IsOpen + updateViewIsOpen(faqFileView1IsOpen,binding.faqFileViewing1DscTv,binding.faqFileViewing1Iv) + } + } + + private fun updateViewIsOpen(b: Boolean, textView: TextView, imageView: ImageView) { + if (b) { + textView.visibility = View.VISIBLE + imageView.setImageResource(R.drawable.icon_arrow_up_gray) + } else { + textView.visibility = View.GONE + imageView.setImageResource(R.drawable.icon_arrow_down_gray) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/all/pdfreader/pro/app/ui/act/MainActivity.kt b/app/src/main/java/com/all/pdfreader/pro/app/ui/act/MainActivity.kt index 85b93e1..76f78bd 100644 --- a/app/src/main/java/com/all/pdfreader/pro/app/ui/act/MainActivity.kt +++ b/app/src/main/java/com/all/pdfreader/pro/app/ui/act/MainActivity.kt @@ -1,8 +1,10 @@ package com.all.pdfreader.pro.app.ui.act +import android.content.Intent import android.os.Build import android.os.Bundle import android.view.View +import android.view.WindowManager import androidx.activity.OnBackPressedCallback import androidx.activity.result.contract.ActivityResultContracts import androidx.fragment.app.Fragment @@ -21,6 +23,9 @@ import com.all.pdfreader.pro.app.ui.fragment.FavoriteFrag import com.all.pdfreader.pro.app.ui.fragment.HomeFrag import com.all.pdfreader.pro.app.ui.fragment.RecentlyFrag import com.all.pdfreader.pro.app.ui.fragment.ToolsFrag +import com.all.pdfreader.pro.app.ui.view.CustomSwitchButton +import com.all.pdfreader.pro.app.ui.view.CustomSwitchButton.OnCheckedChangeListener +import com.all.pdfreader.pro.app.util.AppUtils import com.all.pdfreader.pro.app.util.AppUtils.setClickWithAnimation import com.all.pdfreader.pro.app.util.AppUtils.setOnSingleClickListener import com.all.pdfreader.pro.app.util.PdfScanner @@ -171,6 +176,8 @@ class MainActivity : BaseActivity(), PermissionDialogFragment.PermissionCallback //按钮点击事件 private fun setupNavigation() { + binding.switchScreenOn.setChecked(appStore.keepScreenOn) + binding.homeLlBtn.setOnSingleClickListener { switchFragment(homeFragment) } binding.recentlyLlBtn.setOnSingleClickListener { switchFragment(recentlyFragment) } binding.favoriteLlBtn.setOnSingleClickListener { switchFragment(favoriteFragment) } @@ -182,8 +189,10 @@ class MainActivity : BaseActivity(), PermissionDialogFragment.PermissionCallback } binding.sidebarBtn.setClickWithAnimation { - + binding.drawerLayout.openDrawer(binding.drawerView) } + //防止事件穿透 + binding.drawerView.setOnClickListener { } binding.searchBtn.setClickWithAnimation { startActivity(SearchActivity.createIntent(this, PdfPickerSource.NONE)) @@ -278,6 +287,35 @@ class MainActivity : BaseActivity(), PermissionDialogFragment.PermissionCallback exitAllMultiSelect() } } + binding.faqBtn.setOnClickListener { + val intent = Intent(this, FAQActivity::class.java) + startActivity(intent) + binding.drawerLayout.closeDrawer(binding.drawerView) + } + binding.switchScreenOn.setOnCheckedChangeListener(object : OnCheckedChangeListener { + override fun onCheckedChanged(view: CustomSwitchButton?, isChecked: Boolean) { + view?.setChecked(isChecked) + appStore.keepScreenOn = isChecked + setKeepScreenOn(isChecked) + } + }) + binding.shareAppBtn.setOnClickListener { + AppUtils.shareAppInfo(this) + binding.drawerLayout.closeDrawer(binding.drawerView) + } + binding.privacyPolicyBtn.setOnClickListener { + val intent = Intent(this,PrivacyPolicyActivity::class.java) + startActivity(intent) + binding.drawerLayout.closeDrawer(binding.drawerView) + } + } + + private fun setKeepScreenOn(b: Boolean){ + if (b) { + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } else { + window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + } } private fun switchFragment(target: Fragment) { @@ -288,9 +326,11 @@ class MainActivity : BaseActivity(), PermissionDialogFragment.PermissionCallback } private fun updateSelectedNav(fragment: Fragment) { - if (fragment is ToolsFrag) {//工具界面不展示权限 + if (fragment is ToolsFrag) {//工具界面不展示权限与搜索和多选 binding.pnLayout.visibility = View.GONE + binding.topButtonLayout.visibility = View.GONE } else { + binding.topButtonLayout.visibility = View.VISIBLE if (!StoragePermissionHelper.hasBasicStoragePermission(this)) { binding.pnLayout.visibility = View.VISIBLE } @@ -349,6 +389,7 @@ class MainActivity : BaseActivity(), PermissionDialogFragment.PermissionCallback binding.toolsTv.setTextColor(getColor(R.color.icon_on)) } } + } diff --git a/app/src/main/java/com/all/pdfreader/pro/app/ui/act/PrivacyPolicyActivity.kt b/app/src/main/java/com/all/pdfreader/pro/app/ui/act/PrivacyPolicyActivity.kt new file mode 100644 index 0000000..0b13dc1 --- /dev/null +++ b/app/src/main/java/com/all/pdfreader/pro/app/ui/act/PrivacyPolicyActivity.kt @@ -0,0 +1,129 @@ +package com.all.pdfreader.pro.app.ui.act + +import android.os.Bundle +import android.webkit.WebChromeClient +import android.webkit.WebResourceError +import android.webkit.WebResourceRequest +import android.webkit.WebView +import android.webkit.WebViewClient +import com.all.pdfreader.pro.app.R +import com.all.pdfreader.pro.app.databinding.ActPrivacyPolicyBinding +import com.gyf.immersionbar.ImmersionBar + +class PrivacyPolicyActivity : BaseActivity() { + private lateinit var binding: ActPrivacyPolicyBinding + + override val TAG = "PrivacyPolicyActivity" + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActPrivacyPolicyBinding.inflate(layoutInflater) + setContentView(binding.root) + ImmersionBar.with(this).statusBarView(binding.view).statusBarDarkFont(true) + .navigationBarColor(R.color.bg_color).init() + binding.backBtn.setOnClickListener { + finish() + } + + setupWebView() + loadPrivacyPolicy() + } + + private fun setupWebView() { + binding.webView.apply { + webViewClient = object : WebViewClient() { + override fun onPageStarted(view: WebView?, url: String?, favicon: android.graphics.Bitmap?) { + super.onPageStarted(view, url, favicon) + // 页面开始加载,显示进度条 + binding.progressBar.visibility = android.widget.ProgressBar.VISIBLE + } + + override fun onPageFinished(view: WebView?, url: String?) { + super.onPageFinished(view, url) + // 页面加载完成,隐藏进度条 + binding.progressBar.visibility = android.widget.ProgressBar.GONE + } + + override fun onReceivedError( + view: WebView?, + request: WebResourceRequest?, + error: WebResourceError? + ) { + super.onReceivedError(view, request, error) + // 显示错误页面或提示,隐藏进度条 + binding.progressBar.visibility = android.widget.ProgressBar.GONE + loadErrorPage() + } + } + webChromeClient = WebChromeClient() + settings.javaScriptEnabled = false + settings.builtInZoomControls = true + settings.displayZoomControls = false + settings.loadWithOverviewMode = true + settings.useWideViewPort = true + } + } + + private fun loadPrivacyPolicy() { + val privacyPolicyUrl = "https://www.explore-sun.com/privacy-policy/pdf-reader-pro.html" + + binding.webView.loadUrl(privacyPolicyUrl) + } + + private fun loadErrorPage() { + val errorHtml = """ + + + + + + + +
+

Network connection failed

+

Unable to load privacy policy content. Please check your network connection.

+ Reload +
+ + + """.trimIndent() + binding.webView.loadDataWithBaseURL(null, errorHtml, "text/html", "utf-8", null) + } + + @Deprecated("Deprecated in Java") + override fun onBackPressed() { + if (binding.webView.canGoBack()) { + binding.webView.goBack() + } else { + super.onBackPressed() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/all/pdfreader/pro/app/util/AppUtils.kt b/app/src/main/java/com/all/pdfreader/pro/app/util/AppUtils.kt index 3ccff8e..21f944f 100644 --- a/app/src/main/java/com/all/pdfreader/pro/app/util/AppUtils.kt +++ b/app/src/main/java/com/all/pdfreader/pro/app/util/AppUtils.kt @@ -314,5 +314,45 @@ object AppUtils { } } + fun shareAppInfo(context: Context) { + try { + val appPackageName = context.packageName + val packageManager = context.packageManager + val appInfo = packageManager.getApplicationInfo(appPackageName, 0) + + // 获取应用名称,兼容 labelRes 为空的情况 + val appName = if (appInfo.labelRes != 0) { + context.getString(appInfo.labelRes) + } else { + packageManager.getApplicationLabel(appInfo).toString() + } + + // 应用链接(可自定义成其他市场链接) + val appPlayStoreLink = "https://play.google.com/store/apps/details?id=$appPackageName" + + // 分享内容 + val shareMessage = "Check out $appName on Google Play:\n$appPlayStoreLink" + + // 构建 Intent + val shareIntent = Intent(Intent.ACTION_SEND).apply { + type = "text/plain" + putExtra(Intent.EXTRA_SUBJECT, appName) + putExtra(Intent.EXTRA_TEXT, shareMessage) + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + } + + // 弹出系统分享面板 + val chooser = Intent.createChooser(shareIntent, "Share $appName") + if (shareIntent.resolveActivity(packageManager) != null) { + context.startActivity(chooser) + } else { + Toast.makeText(context, "No app available to share.", Toast.LENGTH_SHORT).show() + } + + } catch (e: Exception) { + e.printStackTrace() + Toast.makeText(context, "Unable to share app info.", Toast.LENGTH_SHORT).show() + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/back_black.xml b/app/src/main/res/drawable/back_black.xml index fd82dac..5e39e91 100644 --- a/app/src/main/res/drawable/back_black.xml +++ b/app/src/main/res/drawable/back_black.xml @@ -1,13 +1,9 @@ + android:width="256dp" + android:height="256dp" + android:viewportWidth="1024" + android:viewportHeight="1024"> + android:pathData="M927.9,478.1 L168.9,478.1l308.7,-308.9c11.7,-11.7 11.4,-30.9 -0.6,-42.9 -12,-12 -31.2,-12.2 -42.9,-0.5L75.2,484.9c-2,1.7 -3.8,3.6 -5.3,5.7 -4,5.4 -6,11.8 -5.9,18.3 -0.1,7.8 2.7,15.6 8.6,21.4l361.6,361.7c11.7,11.7 30.9,11.4 42.9,-0.5 12,-12 12.2,-31.2 0.6,-42.9L168.4,539.5l759.4,0c16.5,0 29.9,-13.7 29.9,-30.7S944.4,478.1 927.9,478.1z" + android:fillColor="#000000"/> diff --git a/app/src/main/res/drawable/drw_faq_item_bg.xml b/app/src/main/res/drawable/drw_faq_item_bg.xml new file mode 100644 index 0000000..93ef794 --- /dev/null +++ b/app/src/main/res/drawable/drw_faq_item_bg.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/icon_arrow_down_gray.xml b/app/src/main/res/drawable/icon_arrow_down_gray.xml new file mode 100644 index 0000000..0e2f8c9 --- /dev/null +++ b/app/src/main/res/drawable/icon_arrow_down_gray.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/icon_arrow_up_gray.xml b/app/src/main/res/drawable/icon_arrow_up_gray.xml new file mode 100644 index 0000000..87ed54f --- /dev/null +++ b/app/src/main/res/drawable/icon_arrow_up_gray.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/icon_faq.xml b/app/src/main/res/drawable/icon_faq.xml new file mode 100644 index 0000000..66022ea --- /dev/null +++ b/app/src/main/res/drawable/icon_faq.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/icon_privacy_policy.xml b/app/src/main/res/drawable/icon_privacy_policy.xml new file mode 100644 index 0000000..8b67646 --- /dev/null +++ b/app/src/main/res/drawable/icon_privacy_policy.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/icon_screen_on.xml b/app/src/main/res/drawable/icon_screen_on.xml new file mode 100644 index 0000000..d0249b2 --- /dev/null +++ b/app/src/main/res/drawable/icon_screen_on.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/act_privacy_policy.xml b/app/src/main/res/layout/act_privacy_policy.xml new file mode 100644 index 0000000..3d2d5fb --- /dev/null +++ b/app/src/main/res/layout/act_privacy_policy.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_faq.xml b/app/src/main/res/layout/activity_faq.xml new file mode 100644 index 0000000..16465a8 --- /dev/null +++ b/app/src/main/res/layout/activity_faq.xml @@ -0,0 +1,252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 80b24e3..790aec0 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,454 +1,626 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_height="0dp" /> + android:layout_height="56dp" + android:gravity="center_vertical" + android:orientation="horizontal"> - - - - - - - - - - - - - + android:src="@drawable/icon_sidebar" /> - + + + android:id="@+id/searchBtn" + android:layout_width="44dp" + android:layout_height="44dp" + android:background="@drawable/dr_click_effect_oval_transparent" + android:gravity="center"> - - + android:src="@drawable/icon_search" /> + android:id="@+id/multiSelectBtn" + android:layout_width="44dp" + android:layout_height="44dp" + android:layout_marginEnd="6dp" + android:background="@drawable/dr_click_effect_oval_transparent" + android:gravity="center"> - - + android:src="@drawable/icon_multi_select" /> + + - + - + - - + + - - + - - + + + + + + + + + + + + + + android:layout_height="wrap_content" + android:layout_gravity="bottom" + android:orientation="vertical"> + android:id="@+id/pnLayout" + android:layout_width="match_parent" + android:layout_height="64dp" + android:background="@drawable/dr_rounded_corner_top_bg_grey" + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingStart="16dp" + android:paddingEnd="16dp" + android:visibility="visible"> + android:src="@drawable/icon_notice" /> - + + + + + + + + + android:layout_height="match_parent" + android:gravity="center"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:id="@+id/multiSelectBottomLayout" + android:layout_width="match_parent" + android:layout_height="64dp" + android:background="@color/white" + android:orientation="horizontal" + android:visibility="visible"> - + - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_pdf_merge.xml b/app/src/main/res/layout/activity_pdf_merge.xml index bfb2810..8c03a6f 100644 --- a/app/src/main/res/layout/activity_pdf_merge.xml +++ b/app/src/main/res/layout/activity_pdf_merge.xml @@ -20,18 +20,21 @@ + + + + diff --git a/app/src/main/res/layout/activity_search_pdf.xml b/app/src/main/res/layout/activity_search_pdf.xml index 50c9f8c..5b19b72 100644 --- a/app/src/main/res/layout/activity_search_pdf.xml +++ b/app/src/main/res/layout/activity_search_pdf.xml @@ -20,18 +20,21 @@ + diff --git a/app/src/main/res/layout/dialog_view_model.xml b/app/src/main/res/layout/dialog_view_model.xml index 8e5cc6f..648ca80 100644 --- a/app/src/main/res/layout/dialog_view_model.xml +++ b/app/src/main/res/layout/dialog_view_model.xml @@ -139,7 +139,7 @@ @@ -171,7 +171,7 @@ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 719260b..38a4bc5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -51,6 +51,7 @@ Rename Details Share + Share App Print Added to Favorite Add Bookmark @@ -170,4 +171,18 @@ Sort by Last modified Sort by Name Sort by Size + Organize all PDF files at one place. + FAQ + Keep screen on + Privacy policy + About App + My files open slowly + the large file size.To ensure the best reading experience, we need some time to load and parse.

We appreciate your understanding and will continue to improve.]]>
+ Why do we need permissions? + "All Files Access" permission to read files on your device, so you can manage, browse them in our app.

Rest assured,the permission will only be used for file reading and will not be used for any other purposes.]]>
+ How to set PDF Reader as my default file reader? + "Open with" pop-up, choose our app icon, and tap "Always" to set PDF Reader as your default file reader.]]> + File Viewing + How to enable "Reflow" mode? + "View mode" in the bottom bar. From there, you can toggle "Reflow" mode on or off.

Currently,this feature is only available on Android7 and above device.We will continue to optimize it and support more systems in the future.Please stay tuned.]]>
\ No newline at end of file