Commit 6f1f0d10 authored by wanglei's avatar wanglei

提交代码

parent 41d9bd85
......@@ -59,5 +59,10 @@ dependencies {
//pdf浏览
//https://github.com/DImuthuUpe/AndroidPdfViewer
implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'
//pdf文件操作
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
......@@ -18,6 +18,9 @@
android:supportsRtl="true"
android:theme="@style/Theme.SuperPDFReader"
tools:targetApi="31">
<activity
android:name=".activity.DocBrowserActivity"
android:exported="false" />
<activity
android:name=".activity.ImageSelectionActivity"
android:exported="false" />
......
......@@ -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_WORD
import com.base.superpdfreader.helps.BaseActivity
import com.base.superpdfreader.helps.MediaStoreHelp.updateMediaStore
import com.base.superpdfreader.view.PDFOperationDialog.showPDFCreateConverter
import com.blankj.utilcode.util.BarUtils
import com.google.android.material.tabs.TabLayoutMediator
......@@ -48,6 +49,8 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
initPage()
intTab()
updateMediaStore()
}
override fun initListener() {
......@@ -104,7 +107,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
}
1 -> {
tabBinding.tvTab.text = "Work"
tabBinding.tvTab.text = "Word"
}
2 -> {
......
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
package com.base.superpdfreader.fragment
import android.provider.MediaStore
import android.widget.Toast
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
......@@ -10,11 +12,14 @@ import com.base.superpdfreader.databinding.FragmentDocumentListBinding
import com.base.superpdfreader.helps.BaseFragment
import com.base.superpdfreader.helps.FileHelp.loadDocument
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.requestStorePermission
import com.base.superpdfreader.view.DocumentDetailDialog.showDocumentDetailDialog
import com.bumptech.glide.load.data.mediastore.MediaStoreUtil
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.io.File
class DocumentListFragment() : BaseFragment<FragmentDocumentListBinding>() {
......@@ -79,46 +84,62 @@ class DocumentListFragment() : BaseFragment<FragmentDocumentListBinding>() {
private fun initData() = lifecycleScope.launch(Dispatchers.IO) {
when (UI_MODE) {
MODE_PDF -> {
loadDocument(filter = {
val fileType = it.path.substring(it.path.length - 4, it.path.length)
val flag = fileType == ".pdf"
LogEx.logDebug(TAG, "fileType=$fileType flag=$flag")
flag
}) { files ->
// loadDocument(filter = {
// val fileType = it.path.substring(it.path.length - 4, it.path.length)
// val flag = fileType == ".pdf"
// LogEx.logDebug(TAG, "fileType=$fileType flag=$flag")
// flag
// }) { 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) {
adapter.addData(MODE_PDF, R.mipmap.pdf, files)
}
}
}
MODE_WORD -> {
loadDocument(filter = {
it.path.contains(".doc")
}) { files ->
val files = arrayListOf<File>()
requireContext().geFileMedia(
files,
arrayOf(
"application/msword",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document"
)
)
launch(Dispatchers.Main) {
adapter.addData(MODE_WORD, R.mipmap.doc, files)
}
}
}
MODE_PPT -> {
loadDocument(filter = {
it.path.contains(".ppt")
}) { files ->
val files = arrayListOf<File>()
requireContext().geFileMedia(
files, arrayOf(
"application/vnd.ms-powerpoint",
"application/vnd.openxmlformats-officedocument.presentationml.presentation"
)
)
launch(Dispatchers.Main) {
adapter.addData(MODE_PPT, R.mipmap.ppt, files)
}
}
}
MODE_EXCEL -> {
loadDocument(filter = {
it.path.contains(".xls")
}) { files ->
val files = arrayListOf<File>()
requireContext().geFileMedia(
files, arrayOf(
"application/vnd.ms-excel",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
)
)
launch(Dispatchers.Main) {
adapter.addData(MODE_EXCEL, R.mipmap.xls, files)
}
adapter.addData(MODE_PPT, R.mipmap.ppt, files)
}
}
}
......
......@@ -3,26 +3,33 @@ package com.base.superpdfreader.helps
import android.annotation.SuppressLint
import android.content.Context
import android.database.Cursor
import android.graphics.drawable.AdaptiveIconDrawable
import android.media.MediaScannerConnection
import android.net.Uri
import android.os.Environment
import android.provider.MediaStore
import com.base.superpdfreader.bean.DocumentBean
import java.io.File
object MediaStoreHelp {
@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(
MediaStore.Files.FileColumns._ID,
// MediaStore.Files.FileColumns._ID,
MediaStore.Files.FileColumns.DATA,
MediaStore.Files.FileColumns.MIME_TYPE,
MediaStore.Files.FileColumns.TITLE,
MediaStore.Files.FileColumns.SIZE,
// MediaStore.Files.FileColumns.MIME_TYPE,
// MediaStore.Files.FileColumns.TITLE,
// MediaStore.Files.FileColumns.SIZE,
)
// 选择条件,筛选出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")
var cursor: Cursor? = null
......@@ -37,12 +44,16 @@ object MediaStoreHelp {
if (cursor != null) {
while (cursor.moveToNext()) {
val tittle = cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns.TITLE))
val path = cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns.DATA))
val size = cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns.SIZE)).toLong()
// val tittle =
// cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns.TITLE))
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) {
......
......@@ -5,11 +5,13 @@ import android.content.Context
import android.content.Intent
import android.view.LayoutInflater
import com.base.superpdfreader.R
import com.base.superpdfreader.activity.DocBrowserActivity
import com.base.superpdfreader.activity.PdfBrowserActivity
import com.base.superpdfreader.bean.DocumentBean
import com.base.superpdfreader.databinding.DialogDocumentDetailBinding
import com.base.superpdfreader.fragment.DocumentListFragment
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_WORD
import com.google.android.material.bottomsheet.BottomSheetDialog
......@@ -68,9 +70,21 @@ object DocumentDetailDialog {
}
}
binding.llOpen.setOnClickListener {
when (UI_MODE) {
MODE_PDF -> {
startActivity(Intent(this, PdfBrowserActivity::class.java).apply {
putExtra("Path", bean.path)
})
}
MODE_WORD -> {
startActivity(Intent(this, DocBrowserActivity::class.java).apply {
putExtra("Path", bean.path)
})
}
}
}
}
}
\ No newline at end of file
<?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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment