Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
B
Browser 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
Browser White
Commits
f3c7066a
Commit
f3c7066a
authored
Aug 08, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
60562622
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
130 additions
and
1 deletion
+130
-1
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+3
-0
ConstObject.kt
app/src/main/java/com/base/browserwhite/bean/ConstObject.kt
+13
-0
MediaBean.kt
app/src/main/java/com/base/browserwhite/bean/MediaBean.kt
+1
-1
FileFragment.kt
...in/java/com/base/browserwhite/ui/fragment/FileFragment.kt
+33
-0
HomeFragment.kt
...in/java/com/base/browserwhite/ui/fragment/HomeFragment.kt
+6
-0
MediaStoreUtils.kt
.../main/java/com/base/browserwhite/utils/MediaStoreUtils.kt
+74
-0
No files found.
app/src/main/AndroidManifest.xml
View file @
f3c7066a
...
...
@@ -10,6 +10,9 @@
<uses-permission
android:name=
"android.permission.CAMERA"
/>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.READ_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.MANAGE_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.FOREGROUND_SERVICE"
/>
...
...
app/src/main/java/com/base/browserwhite/bean/ConstObject.kt
View file @
f3c7066a
...
...
@@ -8,4 +8,17 @@ object ConstObject {
const
val
DUCKDUCKGO
=
"DuckDuckGo"
const
val
YANDEX
=
"Yandex"
const
val
BAIDU
=
"Baidu"
const
val
MIME_TYPE_IMAGE
=
"image/*"
const
val
MIME_TYPE_VIDEO
=
"video/*"
const
val
MIME_TYPE_AUDIO
=
"audio/*"
const
val
MIME_TYPE_PDF
=
"application/pdf"
const
val
MIME_TYPE_DOC
=
"application/msword"
const
val
MIME_TYPE_DOCX
=
"application/vnd.openxmlformats-officedocument.wordprocessingml.document"
const
val
MIME_TYPE_XLS
=
"application/vnd.ms-excel"
const
val
MIME_TYPE_XLSX
=
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
const
val
MIME_TYPE_PPT
=
"application/vnd.ms-powerpoint"
const
val
MIME_TYPE_PPTX
=
"application/vnd.openxmlformats-officedocument.presentationml.presentation"
const
val
MIME_TYPE_APK
=
"application/vnd.android.package-archive/*"
}
\ No newline at end of file
app/src/main/java/com/base/browserwhite/bean/MediaBean.kt
View file @
f3c7066a
...
...
@@ -5,5 +5,5 @@ import android.net.Uri
data class
MediaBean
(
val
path
:
String
=
""
,
val
uri
:
Uri
=
Uri
.
EMPTY
,
val
size
:
Long
=
0
val
mimeType
:
String
=
""
)
app/src/main/java/com/base/browserwhite/ui/fragment/FileFragment.kt
View file @
f3c7066a
...
...
@@ -7,8 +7,14 @@ import android.os.Environment
import
android.os.StatFs
import
android.os.storage.StorageManager
import
androidx.appcompat.app.AppCompatActivity
import
androidx.lifecycle.lifecycleScope
import
com.base.browserwhite.databinding.FragmentFileBinding
import
com.base.browserwhite.ui.activity.MainActivity
import
com.base.browserwhite.utils.KotlinExt.toFormatSize
import
com.base.browserwhite.utils.MediaStoreUtils.getRecentMedia
import
com.base.browserwhite.utils.PermissionHelp.checkStorePermission
import
com.base.browserwhite.utils.PermissionHelp.requestStorePermission
import
kotlinx.coroutines.launch
import
java.io.File
...
...
@@ -22,6 +28,20 @@ class FileFragment : BaseFragment<FragmentFileBinding>() {
showStorage
()
}
override
fun
setListener
()
{
super
.
setListener
()
if
(!
requireContext
().
checkStorePermission
())
{
val
launcher
=
(
requireActivity
()
as
MainActivity
).
launcher
requireContext
().
requestStorePermission
(
launcher
)
{
if
(
it
)
{
initData
()
}
}
}
}
@SuppressLint
(
"SetTextI18n"
)
private
fun
showStorage
()
{
...
...
@@ -49,4 +69,17 @@ class FileFragment : BaseFragment<FragmentFileBinding>() {
}
}
override
fun
onResume
()
{
super
.
onResume
()
if
(
requireContext
().
checkStorePermission
())
{
initData
()
}
}
private
fun
initData
()
=
lifecycleScope
.
launch
{
val
mediaList
=
requireContext
().
getRecentMedia
()
}
}
\ No newline at end of file
app/src/main/java/com/base/browserwhite/ui/fragment/HomeFragment.kt
View file @
f3c7066a
package
com.base.browserwhite.ui.fragment
import
android.content.Intent
import
androidx.lifecycle.lifecycleScope
import
androidx.recyclerview.widget.GridLayoutManager
import
androidx.recyclerview.widget.ItemTouchHelper
import
androidx.recyclerview.widget.LinearLayoutManager
...
...
@@ -20,6 +21,10 @@ import com.base.browserwhite.ui.activity.webstore.WevStoreActivity
import
com.base.browserwhite.ui.adapter.WebsiteAdapter
import
com.base.browserwhite.ui.views.DialogViews.showSearchEngineDialog
import
com.base.browserwhite.ui.views.itemtouch.MyItemTouchHelperCallBack
import
com.base.browserwhite.utils.MediaStoreUtils
import
com.base.browserwhite.utils.MediaStoreUtils.getRecentMedia
import
com.base.browserwhite.utils.PermissionHelp.checkStorePermission
import
kotlinx.coroutines.launch
class
HomeFragment
:
BaseFragment
<
FragmentHomeBinding
>()
{
...
...
@@ -105,4 +110,5 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
}
}
}
\ No newline at end of file
app/src/main/java/com/base/browserwhite/utils/MediaStoreUtils.kt
0 → 100644
View file @
f3c7066a
package
com.base.browserwhite.utils
import
android.annotation.SuppressLint
import
android.content.Context
import
android.database.Cursor
import
android.provider.MediaStore
import
com.base.browserwhite.bean.MediaBean
object
MediaStoreUtils
{
private
val
TAG
=
"MediaStoreUtils"
fun
Context
.
getRecentMedia
():
ArrayList
<
MediaBean
>
{
val
list
=
arrayListOf
<
MediaBean
>()
val
projection
=
arrayOf
(
// MediaStore.Files.FileColumns._ID,
MediaStore
.
Files
.
FileColumns
.
DATA
,
// MediaStore.Files.FileColumns.TITLE,
MediaStore
.
Files
.
FileColumns
.
MIME_TYPE
,
// MediaStore.Files.FileColumns.SIZE,
// MediaStore.Files.FileColumns.DATE_MODIFIED
)
// 构建查询条件,这里以查询图片和视频为例
val
selection
=
(
"${MediaStore.Files.FileColumns.MIME_TYPE} = ?"
+
" or ${MediaStore.Files.FileColumns.MIME_TYPE} = ?"
)
//构建查询条件参数
val
selectionArgs
=
arrayOf
(
"image/*"
,
"video/*"
,
)
var
cursor
:
Cursor
?
=
null
try
{
// 进行查询,并设置排序方式,按照文件添加时间降序排序
cursor
=
this
.
contentResolver
.
query
(
MediaStore
.
Files
.
getContentUri
(
"external"
),
projection
,
selection
,
selectionArgs
,
MediaStore
.
Files
.
FileColumns
.
DATE_ADDED
+
" DESC"
)
if
(
cursor
!=
null
)
{
while
(
cursor
.
moveToNext
())
{
runCatching
{
// val id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns._ID))
val
path
=
cursor
.
getString
(
cursor
.
getColumnIndexOrThrow
(
MediaStore
.
Files
.
FileColumns
.
DATA
))
// val title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.TITLE))
val
mimeType
=
cursor
.
getString
(
cursor
.
getColumnIndexOrThrow
(
MediaStore
.
Files
.
FileColumns
.
MIME_TYPE
))
// val size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.SIZE))
// val dateModified = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATE_MODIFIED))
LogEx
.
logDebug
(
TAG
,
"path=$path mimeType=$mimeType"
)
list
.
add
(
MediaBean
(
path
=
path
,
mimeType
=
mimeType
)
)
}
}
}
}
catch
(
e
:
Exception
)
{
}
finally
{
cursor
?.
close
()
}
return
list
}
}
\ 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