Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
P
Pdf one Reader
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanglei
Pdf one Reader
Commits
3b181bc5
Commit
3b181bc5
authored
Nov 14, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...启动页
parent
0dd1906a
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
133 additions
and
42 deletions
+133
-42
DocumentBean.kt
app/src/main/java/com/base/pdfoneread/bean/DocumentBean.kt
+7
-0
DocumentActivity.kt
.../java/com/base/pdfoneread/ui/document/DocumentActivity.kt
+4
-3
DocumentEx.kt
...c/main/java/com/base/pdfoneread/ui/document/DocumentEx.kt
+10
-0
MainActivity.kt
...src/main/java/com/base/pdfoneread/ui/main/MainActivity.kt
+1
-1
PermissionFragment.kt
...in/java/com/base/pdfoneread/ui/main/PermissionFragment.kt
+26
-3
SettingFragment.kt
.../main/java/com/base/pdfoneread/ui/main/SettingFragment.kt
+39
-5
PdfActivity.kt
app/src/main/java/com/base/pdfoneread/ui/pdf/PdfActivity.kt
+1
-2
MyStartActivity.kt
...ain/java/com/base/pdfoneread/ui/splash/MyStartActivity.kt
+4
-1
ActivityLauncher.kt
...c/main/java/com/base/pdfoneread/utils/ActivityLauncher.kt
+12
-12
SafUtils.kt
app/src/main/java/com/base/pdfoneread/utils/SafUtils.kt
+20
-15
UriUtils.kt
app/src/main/java/com/base/pdfoneread/utils/UriUtils.kt
+8
-0
fragment_setting.xml
app/src/main/res/layout/fragment_setting.xml
+1
-0
No files found.
app/src/main/java/com/base/pdfoneread/bean/DocumentBean.kt
View file @
3b181bc5
package
com.base.pdfoneread.bean
import
android.net.Uri
import
com.base.pdfoneread.bean.ConstObject.MIME_TYPE_DOC
import
com.base.pdfoneread.bean.ConstObject.MIME_TYPE_DOCX
import
com.base.pdfoneread.bean.ConstObject.MIME_TYPE_PDF
import
com.base.pdfoneread.bean.ConstObject.MIME_TYPE_PPT
import
com.base.pdfoneread.bean.ConstObject.MIME_TYPE_PPTX
import
com.base.pdfoneread.bean.ConstObject.MIME_TYPE_XLS
import
com.base.pdfoneread.bean.ConstObject.MIME_TYPE_XLSX
data class
DocumentBean
(
var
path
:
String
=
""
,
...
...
app/src/main/java/com/base/pdfoneread/ui/document/DocumentActivity.kt
View file @
3b181bc5
...
...
@@ -18,6 +18,7 @@ import com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_PPT
import
com.base.pdfoneread.bean.DocumentBean.Companion.TYPE_WORD
import
com.base.pdfoneread.databinding.ActivityDocumentBinding
import
com.base.pdfoneread.ui.BaseActivity
import
com.base.pdfoneread.ui.pdf.PdfActivity
import
com.base.pdfoneread.ui.views.DialogCallBack
import
com.base.pdfoneread.ui.views.DocumentDialog.showDeleteDialog
import
com.base.pdfoneread.ui.views.DocumentDialog.showDocumentHomeMoreDialog
...
...
@@ -68,12 +69,12 @@ class DocumentActivity : BaseActivity<ActivityDocumentBinding>(), DialogCallBack
binding
.
ivAllSelector
.
isSelected
=
size
==
adapter
?.
items
?.
size
}
adapter
?.
itemClick
=
{
item
:
DocumentBean
->
if
(
item
.
type
==
TYPE_PDF
)
{
showPdfHomeMoreDialog
(
item
,
this
)
PdfActivity
.
jumpPdfActivity
(
this
,
item
)
}
else
{
showDocumentHomeMoreDialog
(
item
,
this
)
}
}
}
adapter
?.
moreAction
=
{
item
:
DocumentBean
->
if
(
item
.
type
==
TYPE_PDF
)
{
...
...
app/src/main/java/com/base/pdfoneread/ui/document/DocumentEx.kt
View file @
3b181bc5
...
...
@@ -357,6 +357,16 @@ fun getDocumentType(mediaBean: MediaBean): String {
}
}
fun
getTypeByMimeType
(
mimeType
:
String
):
String
{
return
when
(
mimeType
)
{
MIME_TYPE_PDF
->
TYPE_PDF
MIME_TYPE_DOC
,
MIME_TYPE_DOCX
->
TYPE_WORD
MIME_TYPE_XLS
,
MIME_TYPE_XLSX
->
TYPE_EXCEL
MIME_TYPE_PPT
,
MIME_TYPE_PPTX
->
TYPE_PPT
else
->
""
}
}
fun
saveBookmarkChange
(
addRemove
:
Boolean
,
path
:
String
)
{
if
(
addRemove
)
{
SpStringUtils
.
addSpString
(
BOOKMARK_KEY
,
path
)
...
...
app/src/main/java/com/base/pdfoneread/ui/main/MainActivity.kt
View file @
3b181bc5
...
...
@@ -133,7 +133,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
}
@SuppressLint
(
"SetTextI18n"
)
private
fun
changeHomeUI
()
{
fun
changeHomeUI
()
{
disSelectTab
()
binding
.
ivHome
.
isSelected
=
true
binding
.
tvHome
.
isSelected
=
true
...
...
app/src/main/java/com/base/pdfoneread/ui/main/PermissionFragment.kt
View file @
3b181bc5
...
...
@@ -5,14 +5,21 @@ import androidx.fragment.app.Fragment
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
com.base.pdfoneread.bean.DocumentBean
import
com.base.pdfoneread.databinding.FragmentPermissionBinding
import
com.base.pdfoneread.ui.document.getDocumentType
import
com.base.pdfoneread.ui.document.getTypeByMimeType
import
com.base.pdfoneread.ui.pdf.PdfActivity
import
com.base.pdfoneread.utils.LogEx
import
com.base.pdfoneread.utils.PdfBoxUtils.checkPdfEncryption
import
com.base.pdfoneread.utils.PermissionUtils.requestStoragePermission
import
com.base.pdfoneread.utils.SafUtils.jumpOpenDocumentThenPersistable
import
com.base.pdfoneread.utils.
ToastUtils.toast
import
com.base.pdfoneread.utils.
UriUtils.getMimeTypeBySafUri
class
PermissionFragment
:
Fragment
()
{
private
val
TAG
=
"PermissionFragment"
private
lateinit
var
binding
:
FragmentPermissionBinding
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
...
...
@@ -33,15 +40,31 @@ class PermissionFragment : Fragment() {
binding
.
tvSet
.
setOnClickListener
{
val
activity
=
requireActivity
()
as
MainActivity
?
activity
?:
return
@setOnClickListener
requireContext
().
requestStoragePermission
(
activity
.
launcher
)
{}
requireContext
().
requestStoragePermission
(
activity
.
launcher
)
{
activity
.
changeHomeUI
()
}
}
binding
.
tvFileGo
.
setOnClickListener
{
val
activity
=
requireActivity
()
as
MainActivity
?
activity
?:
return
@setOnClickListener
requireContext
().
jumpOpenDocumentThenPersistable
(
activity
.
launcher
)
{
uri
->
requireContext
().
toast
(
"uri=$uri"
)
LogEx
.
logDebug
(
TAG
,
"uri=$uri"
)
activity
.
changeHomeUI
()
uri
?.
let
{
val
mimeType
=
getMimeTypeBySafUri
(
requireContext
(),
it
)
val
documentBean
=
DocumentBean
(
uri
=
it
,
type
=
getTypeByMimeType
(
mimeType
)).
apply
{
state
=
requireContext
().
checkPdfEncryption
(
uri
=
it
.
toString
())
}
LogEx
.
logDebug
(
TAG
,
"documentBean state=${documentBean.state} mimeType=$mimeType"
)
PdfActivity
.
jumpPdfActivity
(
activity
,
documentBean
)
}
}
}
binding
.
flClose
.
setOnClickListener
{
val
activity
=
requireActivity
()
as
MainActivity
?
activity
?.
changeHomeUI
()
}
}
companion
object
{
...
...
app/src/main/java/com/base/pdfoneread/ui/main/SettingFragment.kt
View file @
3b181bc5
package
com.base.pdfoneread.ui.main
import
android.net.Uri
import
android.os.Bundle
import
androidx.fragment.app.Fragment
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
com.base.pdfoneread.R
import
com.base.pdfoneread.bean.DocumentBean
import
com.base.pdfoneread.databinding.FragmentSettingBinding
import
com.base.pdfoneread.ui.document.getTypeByMimeType
import
com.base.pdfoneread.ui.pdf.PdfActivity
import
com.base.pdfoneread.utils.LogEx
import
com.base.pdfoneread.utils.PdfBoxUtils.checkPdfEncryption
import
com.base.pdfoneread.utils.SafUtils.jumpOpenDocumentThenPersistable
import
com.base.pdfoneread.utils.UriUtils.getMimeTypeBySafUri
class
SettingFragment
:
Fragment
()
{
private
val
TAG
=
"SettingFragment"
private
lateinit
var
binding
:
FragmentSettingBinding
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
}
...
...
@@ -17,9 +27,33 @@ class SettingFragment : Fragment() {
override
fun
onCreateView
(
inflater
:
LayoutInflater
,
container
:
ViewGroup
?,
savedInstanceState
:
Bundle
?
):
View
?
{
// Inflate the layout for this fragment
return
inflater
.
inflate
(
R
.
layout
.
fragment_setting
,
container
,
false
)
):
View
{
binding
=
FragmentSettingBinding
.
inflate
(
layoutInflater
)
return
binding
.
root
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
super
.
onViewCreated
(
view
,
savedInstanceState
)
val
activity
=
requireActivity
()
as
MainActivity
?
activity
?:
return
binding
.
llFileManager
.
setOnClickListener
{
requireContext
().
jumpOpenDocumentThenPersistable
(
activity
.
launcher
)
{
uri
:
Uri
?
->
LogEx
.
logDebug
(
TAG
,
"uri=$uri"
)
activity
.
changeHomeUI
()
uri
?.
let
{
val
mimeType
=
getMimeTypeBySafUri
(
requireContext
(),
it
)
val
documentBean
=
DocumentBean
(
uri
=
it
,
type
=
getTypeByMimeType
(
mimeType
)).
apply
{
state
=
requireContext
().
checkPdfEncryption
(
uri
=
it
.
toString
())
}
LogEx
.
logDebug
(
TAG
,
"documentBean state=${documentBean.state} mimeType=$mimeType"
)
PdfActivity
.
jumpPdfActivity
(
activity
,
documentBean
)
}
}
}
}
companion
object
{
...
...
app/src/main/java/com/base/pdfoneread/ui/pdf/PdfActivity.kt
View file @
3b181bc5
...
...
@@ -46,7 +46,6 @@ import com.base.pdfoneread.utils.LogEx
import
com.base.pdfoneread.utils.SpStringUtils
import
com.base.pdfoneread.utils.SpStringUtils.LAST_VIEW_KEY
import
com.base.pdfoneread.utils.ToastUtils.toast
import
com.google.android.material.internal.ViewUtils.hideKeyboard
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.launch
...
...
@@ -640,7 +639,7 @@ class PdfActivity : BaseActivity<ActivityPdfBinding>() {
if
(
item
.
state
==
0
)
{
activity
.
startActivity
(
Intent
(
activity
,
PdfActivity
::
class
.
java
).
apply
{
putExtra
(
"path"
,
item
.
path
)
putExtra
(
"uri"
,
item
.
uri
)
putExtra
(
"uri"
,
item
.
uri
.
toString
()
)
})
}
if
(
item
.
state
==
1
)
{
...
...
app/src/main/java/com/base/pdfoneread/ui/splash/MyStartActivity.kt
View file @
3b181bc5
...
...
@@ -108,6 +108,9 @@ class MyStartActivity : BaseActivity<ActivityMyStartBinding>() {
})
}
override
fun
onNewIntent
(
intent
:
Intent
?)
{
super
.
onNewIntent
(
intent
)
}
private
var
jump
:
AtomicBoolean
=
AtomicBoolean
(
false
)
fun
jumpNext
()
{
...
...
@@ -121,7 +124,7 @@ class MyStartActivity : BaseActivity<ActivityMyStartBinding>() {
}
else
{
startActivity
(
Intent
(
this
,
MainActivity
::
class
.
java
))
}
finish
()
},
100
)
}
...
...
app/src/main/java/com/base/pdfoneread/utils/ActivityLauncher.kt
View file @
3b181bc5
package
com.base.pdfoneread.utils
import
android.content.Intent
import
android.net.Uri
import
androidx.activity.result.ActivityResult
import
androidx.activity.result.ActivityResultCallback
import
androidx.activity.result.ActivityResultCaller
...
...
@@ -46,18 +47,17 @@ class ActivityLauncher(activityResultCaller: ActivityResultCaller) {
//region saf
// private var safResultCallback: ActivityResultCallback<Uri?>? = null
// private val safLauncher =
// activityResultCaller.registerForActivityResult(
// ActivityResultContracts.OpenDocument(),
// ) { uri ->
// safResultCallback?.onActivityResult(uri)
// }
//
// fun launch(array: Array<String>, safResultCallback: ActivityResultCallback<Uri?>?) {
// this.safResultCallback = safResultCallback
// safLauncher.launch(array)
// }
private
var
safResultCallback
:
ActivityResultCallback
<
Uri
?>?
=
null
private
val
safLauncher
=
activityResultCaller
.
registerForActivityResult
(
ActivityResultContracts
.
OpenDocument
(),
)
{
uri
->
safResultCallback
?.
onActivityResult
(
uri
)
}
fun
launchSaf
(
array
:
Array
<
String
>,
safResultCallback
:
ActivityResultCallback
<
Uri
?
>?)
{
this
.
safResultCallback
=
safResultCallback
safLauncher
.
launch
(
array
)
}
//end region
...
...
app/src/main/java/com/base/pdfoneread/utils/SafUtils.kt
View file @
3b181bc5
package
com.base.pdfoneread.utils
import
android.app.Activity
import
android.content.Context
import
android.content.Intent
import
android.net.Uri
import
android.os.Build
import
android.provider.DocumentsContract
import
com.base.pdfoneread.bean.ConstObject.MIME_TYPE_DOC
import
com.base.pdfoneread.bean.ConstObject.MIME_TYPE_DOCX
import
com.base.pdfoneread.bean.ConstObject.MIME_TYPE_PDF
import
com.base.pdfoneread.bean.ConstObject.MIME_TYPE_PPT
import
com.base.pdfoneread.bean.ConstObject.MIME_TYPE_PPTX
import
com.base.pdfoneread.bean.ConstObject.MIME_TYPE_XLS
import
com.base.pdfoneread.bean.ConstObject.MIME_TYPE_XLSX
object
SafUtils
{
...
...
@@ -20,18 +24,19 @@ object SafUtils {
launcher
:
ActivityLauncher
,
callBack
:
(
uri
:
Uri
?)
->
Unit
)
{
val
intent
=
Intent
(
Intent
.
ACTION_OPEN_DOCUMENT
)
val
downloadsUri
=
Uri
.
parse
(
"content://com.android.providers.downloads.documents/tree/downloads"
)
// 可以设置一个初始URI,当文件选择器加载时会显示这个URI指向的文件夹
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
O
)
{
intent
.
putExtra
(
DocumentsContract
.
EXTRA_INITIAL_URI
,
downloadsUri
)
}
launcher
.
launch
(
intent
)
{
result
->
if
(
result
.
resultCode
==
Activity
.
RESULT_OK
)
{
val
treeUri
=
result
.
data
?.
data
treeUri
?.
let
{
persistableUri
(
it
)
}
callBack
.
invoke
(
treeUri
)
}
val
uris
=
arrayOf
(
MIME_TYPE_PDF
,
// PDF
MIME_TYPE_DOC
,
MIME_TYPE_DOCX
,
MIME_TYPE_XLS
,
MIME_TYPE_XLSX
,
MIME_TYPE_PPT
,
MIME_TYPE_PPTX
,
)
launcher
.
launchSaf
(
uris
)
{
uri
->
uri
?.
let
{
persistableUri
(
it
)
}
callBack
.
invoke
(
uri
)
}
}
...
...
app/src/main/java/com/base/pdfoneread/utils/UriUtils.kt
View file @
3b181bc5
...
...
@@ -26,4 +26,12 @@ object UriUtils {
}
}
}
/**
* 根据saf返回的uri获取MimeType
*/
fun
getMimeTypeBySafUri
(
context
:
Context
,
uri
:
Uri
):
String
{
val
mimeType
=
context
.
contentResolver
.
getType
(
uri
)
?:
"unKnow"
return
mimeType
}
}
\ No newline at end of file
app/src/main/res/layout/fragment_setting.xml
View file @
3b181bc5
...
...
@@ -8,6 +8,7 @@
tools:context=
".ui.main.SettingFragment"
>
<LinearLayout
android:id=
"@+id/ll_file_manager"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"20dp"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment