Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
S
Super PDF 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
Super PDF Reader
Commits
6f1f0d10
Commit
6f1f0d10
authored
Jun 20, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交代码
parent
41d9bd85
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
133 additions
and
42 deletions
+133
-42
build.gradle
app/build.gradle
+5
-0
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+3
-0
MainActivity.kt
app/src/main/java/com/base/superpdfreader/MainActivity.kt
+4
-1
DocBrowserActivity.kt
...va/com/base/superpdfreader/activity/DocBrowserActivity.kt
+24
-0
DocumentListFragment.kt
.../com/base/superpdfreader/fragment/DocumentListFragment.kt
+49
-28
MediaStoreHelp.kt
...main/java/com/base/superpdfreader/helps/MediaStoreHelp.kt
+21
-10
DocumentDetailDialog.kt
...java/com/base/superpdfreader/view/DocumentDetailDialog.kt
+17
-3
activity_doc_browser.xml
app/src/main/res/layout/activity_doc_browser.xml
+10
-0
No files found.
app/build.gradle
View file @
6f1f0d10
...
@@ -59,5 +59,10 @@ dependencies {
...
@@ -59,5 +59,10 @@ dependencies {
//pdf浏览
//pdf浏览
//https://github.com/DImuthuUpe/AndroidPdfViewer
//https://github.com/DImuthuUpe/AndroidPdfViewer
implementation
'com.github.barteksc:android-pdf-viewer:2.8.2'
implementation
'com.github.barteksc:android-pdf-viewer:2.8.2'
//pdf文件操作
implementation
'com.github.barteksc:pdfium-android:1.7.1'
implementation
'com.github.barteksc:pdfium-android:1.7.1'
//word内容提取
implementation
'org.apache.poi:poi:4.1.2'
implementation
'org.apache.poi:poi-ooxml:4.1.2'
}
}
\ No newline at end of file
app/src/main/AndroidManifest.xml
View file @
6f1f0d10
...
@@ -18,6 +18,9 @@
...
@@ -18,6 +18,9 @@
android:supportsRtl=
"true"
android:supportsRtl=
"true"
android:theme=
"@style/Theme.SuperPDFReader"
android:theme=
"@style/Theme.SuperPDFReader"
tools:targetApi=
"31"
>
tools:targetApi=
"31"
>
<activity
android:name=
".activity.DocBrowserActivity"
android:exported=
"false"
/>
<activity
<activity
android:name=
".activity.ImageSelectionActivity"
android:name=
".activity.ImageSelectionActivity"
android:exported=
"false"
/>
android:exported=
"false"
/>
...
...
app/src/main/java/com/base/superpdfreader/MainActivity.kt
View file @
6f1f0d10
...
@@ -15,6 +15,7 @@ import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_EXCE
...
@@ -15,6 +15,7 @@ import com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_EXCE
import
com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_PPT
import
com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_PPT
import
com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_WORD
import
com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_WORD
import
com.base.superpdfreader.helps.BaseActivity
import
com.base.superpdfreader.helps.BaseActivity
import
com.base.superpdfreader.helps.MediaStoreHelp.updateMediaStore
import
com.base.superpdfreader.view.PDFOperationDialog.showPDFCreateConverter
import
com.base.superpdfreader.view.PDFOperationDialog.showPDFCreateConverter
import
com.blankj.utilcode.util.BarUtils
import
com.blankj.utilcode.util.BarUtils
import
com.google.android.material.tabs.TabLayoutMediator
import
com.google.android.material.tabs.TabLayoutMediator
...
@@ -48,6 +49,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
...
@@ -48,6 +49,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
initPage
()
initPage
()
intTab
()
intTab
()
updateMediaStore
()
}
}
override
fun
initListener
()
{
override
fun
initListener
()
{
...
@@ -104,7 +107,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
...
@@ -104,7 +107,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
}
}
1
->
{
1
->
{
tabBinding
.
tvTab
.
text
=
"Wor
k
"
tabBinding
.
tvTab
.
text
=
"Wor
d
"
}
}
2
->
{
2
->
{
...
...
app/src/main/java/com/base/superpdfreader/activity/DocBrowserActivity.kt
0 → 100644
View file @
6f1f0d10
package
com.base.superpdfreader.activity
import
com.base.superpdfreader.databinding.ActivityDocBrowserBinding
import
com.base.superpdfreader.helps.BaseActivity
import
java.io.File
import
java.io.FileInputStream
class
DocBrowserActivity
:
BaseActivity
<
ActivityDocBrowserBinding
>()
{
override
val
binding
:
ActivityDocBrowserBinding
by
lazy
{
ActivityDocBrowserBinding
.
inflate
(
layoutInflater
)
}
override
fun
initView
()
{
val
path
=
intent
.
extras
?.
getString
(
"Path"
)
?:
""
// https://blog.51cto.com/u_16175512/6728878
val
file
=
File
(
path
)
// val doc = XWPFDocument(FileInputStream(file))
}
}
\ No newline at end of file
app/src/main/java/com/base/superpdfreader/fragment/DocumentListFragment.kt
View file @
6f1f0d10
package
com.base.superpdfreader.fragment
package
com.base.superpdfreader.fragment
import
android.provider.MediaStore
import
android.widget.Toast
import
androidx.core.content.ContextCompat
import
androidx.core.content.ContextCompat
import
androidx.core.view.isVisible
import
androidx.core.view.isVisible
import
androidx.lifecycle.lifecycleScope
import
androidx.lifecycle.lifecycleScope
...
@@ -10,11 +12,14 @@ import com.base.superpdfreader.databinding.FragmentDocumentListBinding
...
@@ -10,11 +12,14 @@ import com.base.superpdfreader.databinding.FragmentDocumentListBinding
import
com.base.superpdfreader.helps.BaseFragment
import
com.base.superpdfreader.helps.BaseFragment
import
com.base.superpdfreader.helps.FileHelp.loadDocument
import
com.base.superpdfreader.helps.FileHelp.loadDocument
import
com.base.superpdfreader.helps.LogEx
import
com.base.superpdfreader.helps.LogEx
import
com.base.superpdfreader.helps.MediaStoreHelp.geFileMedia
import
com.base.superpdfreader.helps.PermissionHelp.checkStorePermission
import
com.base.superpdfreader.helps.PermissionHelp.checkStorePermission
import
com.base.superpdfreader.helps.PermissionHelp.requestStorePermission
import
com.base.superpdfreader.helps.PermissionHelp.requestStorePermission
import
com.base.superpdfreader.view.DocumentDetailDialog.showDocumentDetailDialog
import
com.base.superpdfreader.view.DocumentDetailDialog.showDocumentDetailDialog
import
com.bumptech.glide.load.data.mediastore.MediaStoreUtil
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
import
java.io.File
class
DocumentListFragment
()
:
BaseFragment
<
FragmentDocumentListBinding
>()
{
class
DocumentListFragment
()
:
BaseFragment
<
FragmentDocumentListBinding
>()
{
...
@@ -79,46 +84,62 @@ class DocumentListFragment() : BaseFragment<FragmentDocumentListBinding>() {
...
@@ -79,46 +84,62 @@ class DocumentListFragment() : BaseFragment<FragmentDocumentListBinding>() {
private
fun
initData
()
=
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
private
fun
initData
()
=
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
when
(
UI_MODE
)
{
when
(
UI_MODE
)
{
MODE_PDF
->
{
MODE_PDF
->
{
loadDocument
(
filter
=
{
// loadDocument(filter = {
val
fileType
=
it
.
path
.
substring
(
it
.
path
.
length
-
4
,
it
.
path
.
length
)
// val fileType = it.path.substring(it.path.length - 4, it.path.length)
val
flag
=
fileType
==
".pdf"
// val flag = fileType == ".pdf"
LogEx
.
logDebug
(
TAG
,
"fileType=$fileType flag=$flag"
)
// LogEx.logDebug(TAG, "fileType=$fileType flag=$flag")
flag
// flag
})
{
files
->
// }) { files ->
// launch(Dispatchers.Main) {
// adapter.addData(MODE_PDF, R.mipmap.pdf, files)
// }
// }
val
files
=
arrayListOf
<
File
>()
requireContext
().
geFileMedia
(
files
,
arrayOf
(
"application/pdf"
))
launch
(
Dispatchers
.
Main
)
{
launch
(
Dispatchers
.
Main
)
{
adapter
.
addData
(
MODE_PDF
,
R
.
mipmap
.
pdf
,
files
)
adapter
.
addData
(
MODE_PDF
,
R
.
mipmap
.
pdf
,
files
)
}
}
}
}
}
MODE_WORD
->
{
MODE_WORD
->
{
loadDocument
(
filter
=
{
val
files
=
arrayListOf
<
File
>()
it
.
path
.
contains
(
".doc"
)
requireContext
().
geFileMedia
(
})
{
files
->
files
,
arrayOf
(
"application/msword"
,
"application/vnd.openxmlformats-officedocument.wordprocessingml.document"
)
)
launch
(
Dispatchers
.
Main
)
{
launch
(
Dispatchers
.
Main
)
{
adapter
.
addData
(
MODE_WORD
,
R
.
mipmap
.
doc
,
files
)
adapter
.
addData
(
MODE_WORD
,
R
.
mipmap
.
doc
,
files
)
}
}
}
}
}
MODE_PPT
->
{
MODE_PPT
->
{
loadDocument
(
filter
=
{
val
files
=
arrayListOf
<
File
>()
requireContext
().
geFileMedia
(
it
.
path
.
contains
(
".ppt"
)
files
,
arrayOf
(
})
{
files
->
"application/vnd.ms-powerpoint"
,
"application/vnd.openxmlformats-officedocument.presentationml.presentation"
)
)
launch
(
Dispatchers
.
Main
)
{
launch
(
Dispatchers
.
Main
)
{
adapter
.
addData
(
MODE_PPT
,
R
.
mipmap
.
ppt
,
files
)
adapter
.
addData
(
MODE_PPT
,
R
.
mipmap
.
ppt
,
files
)
}
}
}
}
}
MODE_EXCEL
->
{
MODE_EXCEL
->
{
loadDocument
(
filter
=
{
it
.
path
.
contains
(
".xls"
)
val
files
=
arrayListOf
<
File
>()
})
{
files
->
requireContext
().
geFileMedia
(
files
,
arrayOf
(
"application/vnd.ms-excel"
,
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
)
)
launch
(
Dispatchers
.
Main
)
{
launch
(
Dispatchers
.
Main
)
{
adapter
.
addData
(
MODE_EXCEL
,
R
.
mipmap
.
xls
,
files
)
adapter
.
addData
(
MODE_PPT
,
R
.
mipmap
.
ppt
,
files
)
}
}
}
}
}
}
}
...
...
app/src/main/java/com/base/superpdfreader/helps/MediaStoreHelp.kt
View file @
6f1f0d10
...
@@ -3,26 +3,33 @@ package com.base.superpdfreader.helps
...
@@ -3,26 +3,33 @@ package com.base.superpdfreader.helps
import
android.annotation.SuppressLint
import
android.annotation.SuppressLint
import
android.content.Context
import
android.content.Context
import
android.database.Cursor
import
android.database.Cursor
import
android.graphics.drawable.AdaptiveIconDrawable
import
android.media.MediaScannerConnection
import
android.media.MediaScannerConnection
import
android.net.Uri
import
android.net.Uri
import
android.os.Environment
import
android.os.Environment
import
android.provider.MediaStore
import
android.provider.MediaStore
import
com.base.superpdfreader.bean.DocumentBean
import
com.base.superpdfreader.bean.DocumentBean
import
java.io.File
object
MediaStoreHelp
{
object
MediaStoreHelp
{
@SuppressLint
(
"Range"
)
@SuppressLint
(
"Range"
)
fun
Context
.
geFileMedia
(
list
:
ArrayList
<
DocumentBean
>,
selectionArgs
:
Array
<
String
>):
ArrayList
<
DocumentBean
>
{
fun
Context
.
geFileMedia
(
list
:
ArrayList
<
File
>,
selectionArgs
:
Array
<
String
>
):
ArrayList
<
File
>
{
val
projection
=
arrayOf
(
val
projection
=
arrayOf
(
MediaStore
.
Files
.
FileColumns
.
_ID
,
//
MediaStore.Files.FileColumns._ID,
MediaStore
.
Files
.
FileColumns
.
DATA
,
MediaStore
.
Files
.
FileColumns
.
DATA
,
MediaStore
.
Files
.
FileColumns
.
MIME_TYPE
,
//
MediaStore.Files.FileColumns.MIME_TYPE,
MediaStore
.
Files
.
FileColumns
.
TITLE
,
//
MediaStore.Files.FileColumns.TITLE,
MediaStore
.
Files
.
FileColumns
.
SIZE
,
//
MediaStore.Files.FileColumns.SIZE,
)
)
// 选择条件,筛选出MIME类型为application/zip的文件
// 选择条件,筛选出MIME类型为application/zip的文件
val
selection
=
MediaStore
.
Files
.
FileColumns
.
MIME_TYPE
+
"=?"
val
selection
=
MediaStore
.
Files
.
FileColumns
.
MIME_TYPE
+
" = ? OR "
+
MediaStore
.
Files
.
FileColumns
.
MIME_TYPE
+
" = ?"
;
// val selectionArgs = arrayOf("application/zip")
// val selectionArgs = arrayOf("application/zip")
var
cursor
:
Cursor
?
=
null
var
cursor
:
Cursor
?
=
null
...
@@ -37,12 +44,16 @@ object MediaStoreHelp {
...
@@ -37,12 +44,16 @@ object MediaStoreHelp {
if
(
cursor
!=
null
)
{
if
(
cursor
!=
null
)
{
while
(
cursor
.
moveToNext
())
{
while
(
cursor
.
moveToNext
())
{
val
tittle
=
cursor
.
getString
(
cursor
.
getColumnIndex
(
MediaStore
.
Files
.
FileColumns
.
TITLE
))
// val tittle =
val
path
=
cursor
.
getString
(
cursor
.
getColumnIndex
(
MediaStore
.
Files
.
FileColumns
.
DATA
))
// cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns.TITLE))
val
size
=
cursor
.
getString
(
cursor
.
getColumnIndex
(
MediaStore
.
Files
.
FileColumns
.
SIZE
)).
toLong
()
val
path
=
cursor
.
getString
(
cursor
.
getColumnIndex
(
MediaStore
.
Files
.
FileColumns
.
DATA
))
// val size =
// cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns.SIZE))
// .toLong()
// 其他属性...
// 其他属性...
list
.
add
(
File
(
path
))
}
}
cursor
.
close
()
}
}
}
catch
(
e
:
Exception
)
{
}
catch
(
e
:
Exception
)
{
...
...
app/src/main/java/com/base/superpdfreader/view/DocumentDetailDialog.kt
View file @
6f1f0d10
...
@@ -5,11 +5,13 @@ import android.content.Context
...
@@ -5,11 +5,13 @@ import android.content.Context
import
android.content.Intent
import
android.content.Intent
import
android.view.LayoutInflater
import
android.view.LayoutInflater
import
com.base.superpdfreader.R
import
com.base.superpdfreader.R
import
com.base.superpdfreader.activity.DocBrowserActivity
import
com.base.superpdfreader.activity.PdfBrowserActivity
import
com.base.superpdfreader.activity.PdfBrowserActivity
import
com.base.superpdfreader.bean.DocumentBean
import
com.base.superpdfreader.bean.DocumentBean
import
com.base.superpdfreader.databinding.DialogDocumentDetailBinding
import
com.base.superpdfreader.databinding.DialogDocumentDetailBinding
import
com.base.superpdfreader.fragment.DocumentListFragment
import
com.base.superpdfreader.fragment.DocumentListFragment
import
com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_EXCEL
import
com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_EXCEL
import
com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_PDF
import
com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_PPT
import
com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_PPT
import
com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_WORD
import
com.base.superpdfreader.fragment.DocumentListFragment.Companion.MODE_WORD
import
com.google.android.material.bottomsheet.BottomSheetDialog
import
com.google.android.material.bottomsheet.BottomSheetDialog
...
@@ -68,9 +70,21 @@ object DocumentDetailDialog {
...
@@ -68,9 +70,21 @@ object DocumentDetailDialog {
}
}
}
}
binding
.
llOpen
.
setOnClickListener
{
binding
.
llOpen
.
setOnClickListener
{
when
(
UI_MODE
)
{
MODE_PDF
->
{
startActivity
(
Intent
(
this
,
PdfBrowserActivity
::
class
.
java
).
apply
{
startActivity
(
Intent
(
this
,
PdfBrowserActivity
::
class
.
java
).
apply
{
putExtra
(
"Path"
,
bean
.
path
)
putExtra
(
"Path"
,
bean
.
path
)
})
})
}
}
MODE_WORD
->
{
startActivity
(
Intent
(
this
,
DocBrowserActivity
::
class
.
java
).
apply
{
putExtra
(
"Path"
,
bean
.
path
)
})
}
}
}
}
}
}
}
\ No newline at end of file
app/src/main/res/layout/activity_doc_browser.xml
0 → 100644
View file @
6f1f0d10
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:id=
"@+id/main"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".activity.DocBrowserActivity"
>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
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