Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
P
PDF Viewer Scanner White
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 Viewer Scanner White
Commits
e73b5f11
Commit
e73b5f11
authored
Sep 30, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
23d3e3d9
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
304 additions
and
267 deletions
+304
-267
MainActivity.kt
...va/com/base/pdfviewerscannerwhite/ui/main/MainActivity.kt
+23
-3
MainPresenter.kt
...a/com/base/pdfviewerscannerwhite/ui/main/MainPresenter.kt
+15
-0
activity_main2.xml
app/src/main/res/layout/activity_main2.xml
+11
-0
strings.xml
app/src/main/res/values/strings.xml
+5
-10
ChoosePDFActivity.java
...rc/main/java/com/artifex/mupdfdemo/ChoosePDFActivity.java
+198
-199
strings.xml
pdflibrary/src/main/res/values-zh/strings.xml
+52
-53
strings.xml
pdflibrary/src/main/res/values/strings.xml
+0
-2
No files found.
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/MainActivity.kt
View file @
e73b5f11
...
@@ -21,15 +21,18 @@ import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfActivity
...
@@ -21,15 +21,18 @@ import com.base.pdfviewerscannerwhite.ui.document.pdf.PdfActivity
import
com.base.pdfviewerscannerwhite.ui.document.ppt.PptActivity
import
com.base.pdfviewerscannerwhite.ui.document.ppt.PptActivity
import
com.base.pdfviewerscannerwhite.ui.document.word.WordActivity
import
com.base.pdfviewerscannerwhite.ui.document.word.WordActivity
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showDeleteDialog
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showDeleteDialog
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showDocumentRenameDialog
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showStoragePermission
import
com.base.pdfviewerscannerwhite.ui.view.DialogView.showStoragePermission
import
com.base.pdfviewerscannerwhite.ui.view.PdfDialog.showPdfPwdDialog
import
com.base.pdfviewerscannerwhite.ui.view.PdfDialog.showPdfPwdDialog
import
com.base.pdfviewerscannerwhite.utils.IntentShareUtils.shareMutDocuments
import
com.base.pdfviewerscannerwhite.utils.IntentShareUtils.shareMutDocuments
import
com.base.pdfviewerscannerwhite.utils.LogEx
import
com.base.pdfviewerscannerwhite.utils.LogEx
import
com.base.pdfviewerscannerwhite.utils.PermissionUtils.checkStorePermission
import
com.base.pdfviewerscannerwhite.utils.PermissionUtils.checkStorePermission
import
com.base.pdfviewerscannerwhite.utils.updateMediaStore
import
java.io.File
class
MainActivity
:
BaseActivity
<
ActivityMain2Binding
>(),
MainView
{
class
MainActivity
:
BaseActivity
<
ActivityMain2Binding
>(),
MainView
{
private
val
TAG
=
"MainActivity"
private
val
TAG
=
"MainActivity"
lateinit
var
mainPresenter
:
MainPresenter
lateinit
var
mainPresenter
:
MainPresenter
override
val
binding
:
ActivityMain2Binding
by
lazy
{
override
val
binding
:
ActivityMain2Binding
by
lazy
{
ActivityMain2Binding
.
inflate
(
layoutInflater
)
ActivityMain2Binding
.
inflate
(
layoutInflater
)
...
@@ -49,8 +52,10 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
...
@@ -49,8 +52,10 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
private
var
currentFragment
:
Fragment
=
documentFragment
private
var
currentFragment
:
Fragment
=
documentFragment
override
fun
initView
()
{
override
fun
initView
()
{
LogEx
.
logDebug
(
TAG
,
"initView"
)
LogEx
.
logDebug
(
TAG
,
"initView"
)
mainPresenter
=
MainPresenter
(
this
,
this
,
lifecycleScope
)
mainPresenter
=
MainPresenter
(
this
,
this
,
lifecycleScope
)
mainPresenter
.
initScannerLauncher
(
this
)
}
}
...
@@ -67,7 +72,7 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
...
@@ -67,7 +72,7 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
override
fun
onSaveInstanceState
(
outState
:
Bundle
)
{
override
fun
onSaveInstanceState
(
outState
:
Bundle
)
{
super
.
onSaveInstanceState
(
outState
)
super
.
onSaveInstanceState
(
outState
)
LogEx
.
logDebug
(
TAG
,
"onSaveInstanceState"
)
LogEx
.
logDebug
(
TAG
,
"onSaveInstanceState"
)
}
}
var
isDocumentAdd
:
Boolean
=
false
var
isDocumentAdd
:
Boolean
=
false
...
@@ -175,6 +180,9 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
...
@@ -175,6 +180,9 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
binding
.
llShare
.
setOnClickListener
{
binding
.
llShare
.
setOnClickListener
{
shareDocument
()
shareDocument
()
}
}
binding
.
ivScan
.
setOnClickListener
{
mainPresenter
.
starGmsScan
(
this
)
}
}
}
...
@@ -222,6 +230,18 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
...
@@ -222,6 +230,18 @@ class MainActivity : BaseActivity<ActivityMain2Binding>(), MainView {
override
fun
handleActivityGmsScanResult
(
imageUri
:
Uri
,
pdfUri
:
Uri
)
{
override
fun
handleActivityGmsScanResult
(
imageUri
:
Uri
,
pdfUri
:
Uri
)
{
// LogEx.logDebug(TAG, "imageUri=$imageUri")
LogEx
.
logDebug
(
TAG
,
"pdfUri=$pdfUri"
)
val
file
=
File
(
pdfUri
.
toString
().
replace
(
"file://"
,
""
))
if
(
file
.
exists
())
{
// binding.tvTest.text = "imageUri=$imageUri\n\n\n\npdfUri=$pdfUri"
showDocumentRenameDialog
(
file
.
name
)
{
val
newFile
=
File
(
mainPresenter
.
getDocumentAppDir
(),
"$it.pdf"
)
mainPresenter
.
copyFile
(
file
,
newFile
)
this
.
updateMediaStore
()
refreshPageList
()
}
}
}
}
...
...
app/src/main/java/com/base/pdfviewerscannerwhite/ui/main/MainPresenter.kt
View file @
e73b5f11
...
@@ -4,11 +4,13 @@ import android.app.Activity
...
@@ -4,11 +4,13 @@ import android.app.Activity
import
android.content.Context
import
android.content.Context
import
android.content.IntentSender
import
android.content.IntentSender
import
android.net.Uri
import
android.net.Uri
import
android.os.Environment
import
androidx.activity.result.ActivityResultLauncher
import
androidx.activity.result.ActivityResultLauncher
import
androidx.activity.result.IntentSenderRequest
import
androidx.activity.result.IntentSenderRequest
import
androidx.activity.result.contract.ActivityResultContracts
import
androidx.activity.result.contract.ActivityResultContracts
import
androidx.appcompat.app.AppCompatActivity
import
androidx.appcompat.app.AppCompatActivity
import
androidx.lifecycle.LifecycleCoroutineScope
import
androidx.lifecycle.LifecycleCoroutineScope
import
com.base.pdfviewerscannerwhite.R
import
com.base.pdfviewerscannerwhite.bean.ConstObject
import
com.base.pdfviewerscannerwhite.bean.ConstObject
import
com.base.pdfviewerscannerwhite.bean.ConstObject.BOOKMARK_DATA_TYPE
import
com.base.pdfviewerscannerwhite.bean.ConstObject.BOOKMARK_DATA_TYPE
import
com.base.pdfviewerscannerwhite.bean.ConstObject.DOCUMENT_DATA_TYPE
import
com.base.pdfviewerscannerwhite.bean.ConstObject.DOCUMENT_DATA_TYPE
...
@@ -39,6 +41,13 @@ class MainPresenter(
...
@@ -39,6 +41,13 @@ class MainPresenter(
val
lifecycleScope
:
LifecycleCoroutineScope
val
lifecycleScope
:
LifecycleCoroutineScope
)
{
)
{
fun
getDocumentAppDir
():
File
{
val
appDir
=
File
(
Environment
.
getExternalStoragePublicDirectory
(
Environment
.
DIRECTORY_DOCUMENTS
),
context
.
packageName
)
if
(!
appDir
.
exists
())
appDir
.
exists
()
return
appDir
}
//所有fragment的数据,都从这里取
//所有fragment的数据,都从这里取
val
pdfDocuments
=
arrayListOf
<
DocumentBean
>()
val
pdfDocuments
=
arrayListOf
<
DocumentBean
>()
val
wordDocuments
=
arrayListOf
<
DocumentBean
>()
val
wordDocuments
=
arrayListOf
<
DocumentBean
>()
...
@@ -372,4 +381,10 @@ class MainPresenter(
...
@@ -372,4 +381,10 @@ class MainPresenter(
}
}
}
}
fun
copyFile
(
file
:
File
,
newFile
:
File
)
{
runCatching
{
file
.
copyTo
(
newFile
,
true
)
}
}
}
}
\ No newline at end of file
app/src/main/res/layout/activity_main2.xml
View file @
e73b5f11
...
@@ -243,5 +243,16 @@
...
@@ -243,5 +243,16 @@
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:visibility=
"gone"
android:id=
"@+id/tv_test"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginHorizontal=
"20dp"
android:background=
"@color/white"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
e73b5f11
<resources>
<resources
xmlns:tools=
"http://schemas.android.com/tools"
>
<string
name=
"app_name"
>
PDF Viewer
&
Scanner
</string>
<string
name=
"app_name"
tools:ignore=
"MissingTranslation"
>
PDF Viewer
&
Scanner
</string>
<!-- TODO: Remove or change this placeholder text -->
<string
name=
"next"
tools:ignore=
"MissingTranslation"
>
Next
</string>
<string
name=
"hello_blank_fragment"
>
Hello blank fragment
</string>
<string
name=
"previous"
tools:ignore=
"MissingTranslation"
>
Previous
</string>
<!-- Strings used for fragments for navigation -->
<string
name=
"first_fragment_label"
>
First Fragment
</string>
<string
name=
"second_fragment_label"
>
Second Fragment
</string>
<string
name=
"next"
>
Next
</string>
<string
name=
"previous"
>
Previous
</string>
<string
name=
"lorem_ipsum"
>
<string
name=
"lorem_ipsum"
tools:ignore=
"MissingTranslation"
>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam in scelerisque sem. Mauris volutpat, dolor id interdum
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam in scelerisque sem. Mauris volutpat, dolor id interdum
ullamcorper, risus dolor egestas lectus, sit amet mattis purus dui nec risus. Maecenas non sodales nisi, vel dictum dolor.
ullamcorper, risus dolor egestas lectus, sit amet mattis purus dui nec risus. Maecenas non sodales nisi, vel dictum dolor.
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse blandit eleifend diam,
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse blandit eleifend diam,
...
...
pdflibrary/src/main/java/com/artifex/mupdfdemo/ChoosePDFActivity.java
View file @
e73b5f11
...
@@ -33,8 +33,8 @@ public class ChoosePDFActivity extends ListActivity {
...
@@ -33,8 +33,8 @@ public class ChoosePDFActivity extends ListActivity {
static
private
File
mDirectory
;
static
private
File
mDirectory
;
static
private
Map
<
String
,
Integer
>
mPositions
=
new
HashMap
<
String
,
Integer
>();
static
private
Map
<
String
,
Integer
>
mPositions
=
new
HashMap
<
String
,
Integer
>();
private
File
mParent
;
private
File
mParent
;
private
File
[]
mDirs
;
private
File
[]
mDirs
;
private
File
[]
mFiles
;
private
File
[]
mFiles
;
private
Handler
mHandler
;
private
Handler
mHandler
;
private
Runnable
mUpdateFiles
;
private
Runnable
mUpdateFiles
;
private
ChoosePDFAdapter
adapter
;
private
ChoosePDFAdapter
adapter
;
...
@@ -50,13 +50,12 @@ public class ChoosePDFActivity extends ListActivity {
...
@@ -50,13 +50,12 @@ public class ChoosePDFActivity extends ListActivity {
String
storageState
=
Environment
.
getExternalStorageState
();
String
storageState
=
Environment
.
getExternalStorageState
();
if
(!
Environment
.
MEDIA_MOUNTED
.
equals
(
storageState
)
if
(!
Environment
.
MEDIA_MOUNTED
.
equals
(
storageState
)
&&
!
Environment
.
MEDIA_MOUNTED_READ_ONLY
.
equals
(
storageState
))
&&
!
Environment
.
MEDIA_MOUNTED_READ_ONLY
.
equals
(
storageState
))
{
{
AlertDialog
.
Builder
builder
=
new
AlertDialog
.
Builder
(
this
);
AlertDialog
.
Builder
builder
=
new
AlertDialog
.
Builder
(
this
);
builder
.
setTitle
(
R
.
string
.
no_media_warning
);
builder
.
setTitle
(
R
.
string
.
no_media_warning
);
builder
.
setMessage
(
R
.
string
.
no_media_hint
);
builder
.
setMessage
(
R
.
string
.
no_media_hint
);
AlertDialog
alert
=
builder
.
create
();
AlertDialog
alert
=
builder
.
create
();
alert
.
setButton
(
AlertDialog
.
BUTTON_POSITIVE
,
getString
(
R
.
string
.
dismiss
),
alert
.
setButton
(
AlertDialog
.
BUTTON_POSITIVE
,
getString
(
R
.
string
.
dismiss
),
new
OnClickListener
()
{
new
OnClickListener
()
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
finish
();
finish
();
...
@@ -78,8 +77,8 @@ public class ChoosePDFActivity extends ListActivity {
...
@@ -78,8 +77,8 @@ public class ChoosePDFActivity extends ListActivity {
mUpdateFiles
=
new
Runnable
()
{
mUpdateFiles
=
new
Runnable
()
{
public
void
run
()
{
public
void
run
()
{
Resources
res
=
getResources
();
Resources
res
=
getResources
();
String
appName
=
res
.
getString
(
R
.
string
.
app_name
)
;
String
appName
=
"app_name"
;
String
version
=
res
.
getString
(
R
.
string
.
version
)
;
String
version
=
"1.0"
;
String
title
=
res
.
getString
(
R
.
string
.
picker_title_App_Ver_Dir
);
String
title
=
res
.
getString
(
R
.
string
.
picker_title_App_Ver_Dir
);
setTitle
(
String
.
format
(
title
,
appName
,
version
,
mDirectory
));
setTitle
(
String
.
format
(
title
,
appName
,
version
,
mDirectory
));
...
@@ -204,7 +203,7 @@ public class ChoosePDFActivity extends ListActivity {
...
@@ -204,7 +203,7 @@ public class ChoosePDFActivity extends ListActivity {
position
-=
mDirs
.
length
;
position
-=
mDirs
.
length
;
Uri
uri
=
Uri
.
fromFile
(
mFiles
[
position
]);
Uri
uri
=
Uri
.
fromFile
(
mFiles
[
position
]);
Intent
intent
=
new
Intent
(
this
,
MuPDFActivity
.
class
);
Intent
intent
=
new
Intent
(
this
,
MuPDFActivity
.
class
);
intent
.
setAction
(
Intent
.
ACTION_VIEW
);
intent
.
setAction
(
Intent
.
ACTION_VIEW
);
intent
.
setData
(
uri
);
intent
.
setData
(
uri
);
switch
(
mPurpose
)
{
switch
(
mPurpose
)
{
...
...
pdflibrary/src/main/res/values-zh/strings.xml
View file @
e73b5f11
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<resources>
<string
name=
"accept"
>
接受
</string>
<string
name=
"accept"
>
接受
</string>
<string
name=
"app_name"
>
MuPDF
</string>
<string
name=
"cancel"
>
取消
</string>
<string
name=
"cancel"
>
取消
</string>
<string
name=
"cannot_open_buffer"
>
无法打开缓冲器
</string>
<string
name=
"cannot_open_buffer"
>
无法打开缓冲器
</string>
<string
name=
"cannot_open_document"
>
无法打开文档
</string>
<string
name=
"cannot_open_document"
>
无法打开文档
</string>
...
...
pdflibrary/src/main/res/values/strings.xml
View file @
e73b5f11
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<resources>
<string
name=
"app_name"
>
MuPDF
</string>
<string
name=
"version"
>
1.9 (git build)
</string>
<string
name=
"no_media_warning"
>
Storage media not present
</string>
<string
name=
"no_media_warning"
>
Storage media not present
</string>
<string
name=
"no_media_hint"
>
Sharing the storage media with a PC can make it inaccessible
</string>
<string
name=
"no_media_hint"
>
Sharing the storage media with a PC can make it inaccessible
</string>
<string
name=
"cancel"
>
Cancel
</string>
<string
name=
"cancel"
>
Cancel
</string>
...
...
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