Commit 6f1f0d10 authored by wanglei's avatar wanglei

提交代码

parent 41d9bd85
...@@ -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
...@@ -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" />
......
...@@ -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 = "Work" tabBinding.tvTab.text = "Word"
} }
2 -> { 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 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)
}
} }
} }
} }
......
...@@ -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) {
......
...@@ -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
<?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