shortening some code by importing more specific mediastore classes

This commit is contained in:
tibbi 2020-04-14 16:25:27 +02:00
parent c17fb071fc
commit ed501572d1
8 changed files with 74 additions and 63 deletions

View file

@ -9,6 +9,8 @@ import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.os.Handler import android.os.Handler
import android.provider.MediaStore import android.provider.MediaStore
import android.provider.MediaStore.Images
import android.provider.MediaStore.Video
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
import android.view.ViewGroup import android.view.ViewGroup
@ -736,24 +738,24 @@ class MainActivity : SimpleActivity(), DirectoryOperationsListener {
private fun isGetContentIntent(intent: Intent) = intent.action == Intent.ACTION_GET_CONTENT && intent.type != null private fun isGetContentIntent(intent: Intent) = intent.action == Intent.ACTION_GET_CONTENT && intent.type != null
private fun isGetImageContentIntent(intent: Intent) = isGetContentIntent(intent) && private fun isGetImageContentIntent(intent: Intent) = isGetContentIntent(intent) &&
(intent.type!!.startsWith("image/") || intent.type == MediaStore.Images.Media.CONTENT_TYPE) (intent.type!!.startsWith("image/") || intent.type == Images.Media.CONTENT_TYPE)
private fun isGetVideoContentIntent(intent: Intent) = isGetContentIntent(intent) && private fun isGetVideoContentIntent(intent: Intent) = isGetContentIntent(intent) &&
(intent.type!!.startsWith("video/") || intent.type == MediaStore.Video.Media.CONTENT_TYPE) (intent.type!!.startsWith("video/") || intent.type == Video.Media.CONTENT_TYPE)
private fun isGetAnyContentIntent(intent: Intent) = isGetContentIntent(intent) && intent.type == "*/*" private fun isGetAnyContentIntent(intent: Intent) = isGetContentIntent(intent) && intent.type == "*/*"
private fun isSetWallpaperIntent(intent: Intent?) = intent?.action == Intent.ACTION_SET_WALLPAPER private fun isSetWallpaperIntent(intent: Intent?) = intent?.action == Intent.ACTION_SET_WALLPAPER
private fun hasImageContentData(intent: Intent) = (intent.data == MediaStore.Images.Media.EXTERNAL_CONTENT_URI || private fun hasImageContentData(intent: Intent) = (intent.data == Images.Media.EXTERNAL_CONTENT_URI ||
intent.data == MediaStore.Images.Media.INTERNAL_CONTENT_URI) intent.data == Images.Media.INTERNAL_CONTENT_URI)
private fun hasVideoContentData(intent: Intent) = (intent.data == MediaStore.Video.Media.EXTERNAL_CONTENT_URI || private fun hasVideoContentData(intent: Intent) = (intent.data == Video.Media.EXTERNAL_CONTENT_URI ||
intent.data == MediaStore.Video.Media.INTERNAL_CONTENT_URI) intent.data == Video.Media.INTERNAL_CONTENT_URI)
private fun isImageType(intent: Intent) = (intent.type?.startsWith("image/") == true || intent.type == MediaStore.Images.Media.CONTENT_TYPE) private fun isImageType(intent: Intent) = (intent.type?.startsWith("image/") == true || intent.type == Images.Media.CONTENT_TYPE)
private fun isVideoType(intent: Intent) = (intent.type?.startsWith("video/") == true || intent.type == MediaStore.Video.Media.CONTENT_TYPE) private fun isVideoType(intent: Intent) = (intent.type?.startsWith("video/") == true || intent.type == Video.Media.CONTENT_TYPE)
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) { override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
if (resultCode == Activity.RESULT_OK) { if (resultCode == Activity.RESULT_OK) {

View file

@ -3,7 +3,8 @@ package com.simplemobiletools.gallery.pro.activities
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.database.ContentObserver import android.database.ContentObserver
import android.net.Uri import android.net.Uri
import android.provider.MediaStore import android.provider.MediaStore.Images
import android.provider.MediaStore.Video
import android.view.WindowManager import android.view.WindowManager
import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.dialogs.FilePickerDialog import com.simplemobiletools.commons.dialogs.FilePickerDialog
@ -70,8 +71,8 @@ open class SimpleActivity : BaseSimpleActivity() {
protected fun registerFileUpdateListener() { protected fun registerFileUpdateListener() {
try { try {
contentResolver.registerContentObserver(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, true, observer) contentResolver.registerContentObserver(Images.Media.EXTERNAL_CONTENT_URI, true, observer)
contentResolver.registerContentObserver(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, true, observer) contentResolver.registerContentObserver(Video.Media.EXTERNAL_CONTENT_URI, true, observer)
} catch (ignored: Exception) { } catch (ignored: Exception) {
} }
} }

View file

@ -20,7 +20,7 @@ import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.os.Handler import android.os.Handler
import android.provider.MediaStore import android.provider.MediaStore.Images
import android.text.Html import android.text.Html
import android.view.Menu import android.view.Menu
import android.view.MenuItem import android.view.MenuItem
@ -261,10 +261,10 @@ class ViewPagerActivity : SimpleActivity(), ViewPager.OnPageChangeListener, View
if (uri != null) { if (uri != null) {
var cursor: Cursor? = null var cursor: Cursor? = null
try { try {
val proj = arrayOf(MediaStore.Images.Media.DATA) val proj = arrayOf(Images.Media.DATA)
cursor = contentResolver.query(uri, proj, null, null, null) cursor = contentResolver.query(uri, proj, null, null, null)
if (cursor?.moveToFirst() == true) { if (cursor?.moveToFirst() == true) {
mPath = cursor.getStringValue(MediaStore.Images.Media.DATA) mPath = cursor.getStringValue(Images.Media.DATA)
} }
} finally { } finally {
cursor?.close() cursor?.close()

View file

@ -13,6 +13,7 @@ import android.media.ExifInterface
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.provider.MediaStore import android.provider.MediaStore
import android.provider.MediaStore.Images
import android.util.DisplayMetrics import android.util.DisplayMetrics
import android.view.View import android.view.View
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
@ -428,10 +429,10 @@ fun Activity.fixDateTaken(paths: ArrayList<String>, showToasts: Boolean, hasResc
val uri = getFileUri(path) val uri = getFileUri(path)
ContentProviderOperation.newUpdate(uri).apply { ContentProviderOperation.newUpdate(uri).apply {
val selection = "${MediaStore.Images.Media.DATA} = ?" val selection = "${Images.Media.DATA} = ?"
val selectionArgs = arrayOf(path) val selectionArgs = arrayOf(path)
withSelection(selection, selectionArgs) withSelection(selection, selectionArgs)
withValue(MediaStore.Images.Media.DATE_TAKEN, timestamp) withValue(Images.Media.DATE_TAKEN, timestamp)
operations.add(build()) operations.add(build())
} }

View file

@ -7,7 +7,8 @@ import android.content.Intent
import android.database.Cursor import android.database.Cursor
import android.graphics.drawable.PictureDrawable import android.graphics.drawable.PictureDrawable
import android.media.AudioManager import android.media.AudioManager
import android.provider.MediaStore import android.provider.MediaStore.Files
import android.provider.MediaStore.Images
import android.widget.ImageView import android.widget.ImageView
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.bumptech.glide.Priority import com.bumptech.glide.Priority
@ -303,11 +304,11 @@ fun Context.getNoMediaFolders(callback: (folders: ArrayList<String>) -> Unit) {
ensureBackgroundThread { ensureBackgroundThread {
val folders = ArrayList<String>() val folders = ArrayList<String>()
val uri = MediaStore.Files.getContentUri("external") val uri = Files.getContentUri("external")
val projection = arrayOf(MediaStore.Files.FileColumns.DATA) val projection = arrayOf(Files.FileColumns.DATA)
val selection = "${MediaStore.Files.FileColumns.MEDIA_TYPE} = ? AND ${MediaStore.Files.FileColumns.TITLE} LIKE ?" val selection = "${Files.FileColumns.MEDIA_TYPE} = ? AND ${Files.FileColumns.TITLE} LIKE ?"
val selectionArgs = arrayOf(MediaStore.Files.FileColumns.MEDIA_TYPE_NONE.toString(), "%$NOMEDIA%") val selectionArgs = arrayOf(Files.FileColumns.MEDIA_TYPE_NONE.toString(), "%$NOMEDIA%")
val sortOrder = "${MediaStore.Files.FileColumns.DATE_MODIFIED} DESC" val sortOrder = "${Files.FileColumns.DATE_MODIFIED} DESC"
val OTGPath = config.OTGPath val OTGPath = config.OTGPath
var cursor: Cursor? = null var cursor: Cursor? = null
@ -315,7 +316,7 @@ fun Context.getNoMediaFolders(callback: (folders: ArrayList<String>) -> Unit) {
cursor = contentResolver.query(uri, projection, selection, selectionArgs, sortOrder) cursor = contentResolver.query(uri, projection, selection, selectionArgs, sortOrder)
if (cursor?.moveToFirst() == true) { if (cursor?.moveToFirst() == true) {
do { do {
val path = cursor.getStringValue(MediaStore.Files.FileColumns.DATA) ?: continue val path = cursor.getStringValue(Files.FileColumns.DATA) ?: continue
val noMediaFile = File(path) val noMediaFile = File(path)
if (getDoesFilePathExist(noMediaFile.absolutePath, OTGPath) && noMediaFile.name == NOMEDIA) { if (getDoesFilePathExist(noMediaFile.absolutePath, OTGPath) && noMediaFile.name == NOMEDIA) {
folders.add("${noMediaFile.parent}/") folders.add("${noMediaFile.parent}/")
@ -886,11 +887,11 @@ fun Context.updateDirectoryPath(path: String) {
fun Context.getFileDateTaken(path: String): Long { fun Context.getFileDateTaken(path: String): Long {
val projection = arrayOf( val projection = arrayOf(
MediaStore.Images.Media.DATE_TAKEN Images.Media.DATE_TAKEN
) )
val uri = MediaStore.Files.getContentUri("external") val uri = Files.getContentUri("external")
val selection = "${MediaStore.Images.Media.DATA} = ?" val selection = "${Images.Media.DATA} = ?"
val selectionArgs = arrayOf(path) val selectionArgs = arrayOf(path)
val cursor = contentResolver.query(uri, projection, selection, selectionArgs, null) val cursor = contentResolver.query(uri, projection, selection, selectionArgs, null)
@ -898,7 +899,7 @@ fun Context.getFileDateTaken(path: String): Long {
if (cursor.moveToFirst()) { if (cursor.moveToFirst()) {
do { do {
try { try {
return cursor.getLongValue(MediaStore.Images.Media.DATE_TAKEN) return cursor.getLongValue(Images.Media.DATE_TAKEN)
} catch (ignored: Exception) { } catch (ignored: Exception) {
} }
} while (cursor.moveToNext()) } while (cursor.moveToNext())

View file

@ -2,6 +2,8 @@ package com.simplemobiletools.gallery.pro.fragments
import android.media.ExifInterface import android.media.ExifInterface
import android.provider.MediaStore import android.provider.MediaStore
import android.provider.MediaStore.Files
import android.provider.MediaStore.Images
import android.view.MotionEvent import android.view.MotionEvent
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.extensions.*
@ -91,14 +93,14 @@ abstract class ViewPagerFragment : Fragment() {
fun getPathToLoad(medium: Medium) = if (context?.isPathOnOTG(medium.path) == true) medium.path.getOTGPublicPath(context!!) else medium.path fun getPathToLoad(medium: Medium) = if (context?.isPathOnOTG(medium.path) == true) medium.path.getOTGPublicPath(context!!) else medium.path
private fun getFileLastModified(file: File): String { private fun getFileLastModified(file: File): String {
val projection = arrayOf(MediaStore.Images.Media.DATE_MODIFIED) val projection = arrayOf(Images.Media.DATE_MODIFIED)
val uri = MediaStore.Files.getContentUri("external") val uri = Files.getContentUri("external")
val selection = "${MediaStore.MediaColumns.DATA} = ?" val selection = "${MediaStore.MediaColumns.DATA} = ?"
val selectionArgs = arrayOf(file.absolutePath) val selectionArgs = arrayOf(file.absolutePath)
val cursor = context!!.contentResolver.query(uri, projection, selection, selectionArgs, null) val cursor = context!!.contentResolver.query(uri, projection, selection, selectionArgs, null)
cursor?.use { cursor?.use {
return if (cursor.moveToFirst()) { return if (cursor.moveToFirst()) {
val dateModified = cursor.getLongValue(MediaStore.Images.Media.DATE_MODIFIED) * 1000L val dateModified = cursor.getLongValue(Images.Media.DATE_MODIFIED) * 1000L
dateModified.formatDate(context!!) dateModified.formatDate(context!!)
} else { } else {
file.lastModified().formatDate(context!!) file.lastModified().formatDate(context!!)

View file

@ -5,7 +5,8 @@ import android.database.Cursor
import android.net.Uri import android.net.Uri
import android.os.Environment import android.os.Environment
import android.provider.BaseColumns import android.provider.BaseColumns
import android.provider.MediaStore import android.provider.MediaStore.Files
import android.provider.MediaStore.Images
import android.text.format.DateFormat import android.text.format.DateFormat
import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.* import com.simplemobiletools.commons.helpers.*
@ -54,8 +55,8 @@ class MediaFetcher(val context: Context) {
).filter { context.getDoesFilePathExist(it, OTGPath) }) ).filter { context.getDoesFilePathExist(it, OTGPath) })
val filterMedia = context.config.filterMedia val filterMedia = context.config.filterMedia
val uri = MediaStore.Files.getContentUri("external") val uri = Files.getContentUri("external")
val projection = arrayOf(MediaStore.Images.Media.DATA) val projection = arrayOf(Images.Media.DATA)
val selection = getSelectionQuery(filterMedia) val selection = getSelectionQuery(filterMedia)
val selectionArgs = getSelectionArgsQuery(filterMedia).toTypedArray() val selectionArgs = getSelectionArgsQuery(filterMedia).toTypedArray()
val cursor = context.contentResolver.query(uri, projection, selection, selectionArgs, null) val cursor = context.contentResolver.query(uri, projection, selection, selectionArgs, null)
@ -72,8 +73,8 @@ class MediaFetcher(val context: Context) {
} }
private fun getLatestFileFolders(): LinkedHashSet<String> { private fun getLatestFileFolders(): LinkedHashSet<String> {
val uri = MediaStore.Files.getContentUri("external") val uri = Files.getContentUri("external")
val projection = arrayOf(MediaStore.Images.ImageColumns.DATA) val projection = arrayOf(Images.ImageColumns.DATA)
val parents = LinkedHashSet<String>() val parents = LinkedHashSet<String>()
val sorting = "${BaseColumns._ID} DESC LIMIT 50" val sorting = "${BaseColumns._ID} DESC LIMIT 50"
var cursor: Cursor? = null var cursor: Cursor? = null
@ -81,7 +82,7 @@ class MediaFetcher(val context: Context) {
cursor = context.contentResolver.query(uri, projection, null, null, sorting) cursor = context.contentResolver.query(uri, projection, null, null, sorting)
if (cursor?.moveToFirst() == true) { if (cursor?.moveToFirst() == true) {
do { do {
val path = cursor.getStringValue(MediaStore.Images.ImageColumns.DATA) ?: continue val path = cursor.getStringValue(Images.ImageColumns.DATA) ?: continue
parents.add(path.getParentPath()) parents.add(path.getParentPath())
} while (cursor.moveToNext()) } while (cursor.moveToNext())
} }
@ -98,33 +99,33 @@ class MediaFetcher(val context: Context) {
val query = StringBuilder() val query = StringBuilder()
if (filterMedia and TYPE_IMAGES != 0) { if (filterMedia and TYPE_IMAGES != 0) {
photoExtensions.forEach { photoExtensions.forEach {
query.append("${MediaStore.Images.Media.DATA} LIKE ? OR ") query.append("${Images.Media.DATA} LIKE ? OR ")
} }
} }
if (filterMedia and TYPE_PORTRAITS != 0) { if (filterMedia and TYPE_PORTRAITS != 0) {
query.append("${MediaStore.Images.Media.DATA} LIKE ? OR ") query.append("${Images.Media.DATA} LIKE ? OR ")
query.append("${MediaStore.Images.Media.DATA} LIKE ? OR ") query.append("${Images.Media.DATA} LIKE ? OR ")
} }
if (filterMedia and TYPE_VIDEOS != 0) { if (filterMedia and TYPE_VIDEOS != 0) {
videoExtensions.forEach { videoExtensions.forEach {
query.append("${MediaStore.Images.Media.DATA} LIKE ? OR ") query.append("${Images.Media.DATA} LIKE ? OR ")
} }
} }
if (filterMedia and TYPE_GIFS != 0) { if (filterMedia and TYPE_GIFS != 0) {
query.append("${MediaStore.Images.Media.DATA} LIKE ? OR ") query.append("${Images.Media.DATA} LIKE ? OR ")
} }
if (filterMedia and TYPE_RAWS != 0) { if (filterMedia and TYPE_RAWS != 0) {
rawExtensions.forEach { rawExtensions.forEach {
query.append("${MediaStore.Images.Media.DATA} LIKE ? OR ") query.append("${Images.Media.DATA} LIKE ? OR ")
} }
} }
if (filterMedia and TYPE_SVGS != 0) { if (filterMedia and TYPE_SVGS != 0) {
query.append("${MediaStore.Images.Media.DATA} LIKE ? OR ") query.append("${Images.Media.DATA} LIKE ? OR ")
} }
return query.toString().trim().removeSuffix("OR") return query.toString().trim().removeSuffix("OR")
@ -176,7 +177,7 @@ class MediaFetcher(val context: Context) {
cursor.use { cursor.use {
if (cursor.moveToFirst()) { if (cursor.moveToFirst()) {
do { do {
val path = cursor.getStringValue(MediaStore.Images.Media.DATA) val path = cursor.getStringValue(Images.Media.DATA)
val parentPath = File(path).parent ?: continue val parentPath = File(path).parent ?: continue
if (!includedFolders.contains(parentPath) && !foldersToIgnore.contains(parentPath)) { if (!includedFolders.contains(parentPath) && !foldersToIgnore.contains(parentPath)) {
foldersToScan.add(parentPath) foldersToScan.add(parentPath)
@ -395,12 +396,12 @@ class MediaFetcher(val context: Context) {
val dateTakens = HashMap<String, Long>() val dateTakens = HashMap<String, Long>()
if (folder != FAVORITES) { if (folder != FAVORITES) {
val projection = arrayOf( val projection = arrayOf(
MediaStore.Images.Media.DISPLAY_NAME, Images.Media.DISPLAY_NAME,
MediaStore.Images.Media.DATE_TAKEN Images.Media.DATE_TAKEN
) )
val uri = MediaStore.Files.getContentUri("external") val uri = Files.getContentUri("external")
val selection = "${MediaStore.Images.Media.DATA} LIKE ? AND ${MediaStore.Images.Media.DATA} NOT LIKE ?" val selection = "${Images.Media.DATA} LIKE ? AND ${Images.Media.DATA} NOT LIKE ?"
val selectionArgs = arrayOf("$folder/%", "$folder/%/%") val selectionArgs = arrayOf("$folder/%", "$folder/%/%")
val cursor = context.contentResolver.query(uri, projection, selection, selectionArgs, null) val cursor = context.contentResolver.query(uri, projection, selection, selectionArgs, null)
@ -408,9 +409,9 @@ class MediaFetcher(val context: Context) {
if (cursor.moveToFirst()) { if (cursor.moveToFirst()) {
do { do {
try { try {
val dateTaken = cursor.getLongValue(MediaStore.Images.Media.DATE_TAKEN) val dateTaken = cursor.getLongValue(Images.Media.DATE_TAKEN)
if (dateTaken != 0L) { if (dateTaken != 0L) {
val name = cursor.getStringValue(MediaStore.Images.Media.DISPLAY_NAME) val name = cursor.getStringValue(Images.Media.DISPLAY_NAME)
dateTakens["$folder/$name"] = dateTaken dateTakens["$folder/$name"] = dateTaken
} }
} catch (e: Exception) { } catch (e: Exception) {

View file

@ -2,6 +2,7 @@ package com.simplemobiletools.gallery.pro.jobs
import android.annotation.TargetApi import android.annotation.TargetApi
import android.app.job.JobInfo import android.app.job.JobInfo
import android.app.job.JobInfo.TriggerContentUri
import android.app.job.JobParameters import android.app.job.JobParameters
import android.app.job.JobScheduler import android.app.job.JobScheduler
import android.app.job.JobService import android.app.job.JobService
@ -12,6 +13,8 @@ import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Handler import android.os.Handler
import android.provider.MediaStore import android.provider.MediaStore
import android.provider.MediaStore.Images
import android.provider.MediaStore.Video
import com.simplemobiletools.commons.extensions.getParentPath import com.simplemobiletools.commons.extensions.getParentPath
import com.simplemobiletools.commons.extensions.getStringValue import com.simplemobiletools.commons.extensions.getStringValue
import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.helpers.ensureBackgroundThread
@ -24,8 +27,8 @@ class NewPhotoFetcher : JobService() {
companion object { companion object {
const val PHOTO_VIDEO_CONTENT_JOB = 1 const val PHOTO_VIDEO_CONTENT_JOB = 1
private val MEDIA_URI = Uri.parse("content://${MediaStore.AUTHORITY}/") private val MEDIA_URI = Uri.parse("content://${MediaStore.AUTHORITY}/")
private val PHOTO_PATH_SEGMENTS = MediaStore.Images.Media.EXTERNAL_CONTENT_URI.pathSegments private val PHOTO_PATH_SEGMENTS = Images.Media.EXTERNAL_CONTENT_URI.pathSegments
private val VIDEO_PATH_SEGMENTS = MediaStore.Video.Media.EXTERNAL_CONTENT_URI.pathSegments private val VIDEO_PATH_SEGMENTS = Video.Media.EXTERNAL_CONTENT_URI.pathSegments
} }
private val mHandler = Handler() private val mHandler = Handler()
@ -38,15 +41,15 @@ class NewPhotoFetcher : JobService() {
fun scheduleJob(context: Context) { fun scheduleJob(context: Context) {
val componentName = ComponentName(context, NewPhotoFetcher::class.java) val componentName = ComponentName(context, NewPhotoFetcher::class.java)
val photoUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI val photoUri = Images.Media.EXTERNAL_CONTENT_URI
val videoUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI val videoUri = Video.Media.EXTERNAL_CONTENT_URI
JobInfo.Builder(PHOTO_VIDEO_CONTENT_JOB, componentName).apply { JobInfo.Builder(PHOTO_VIDEO_CONTENT_JOB, componentName).apply {
addTriggerContentUri(JobInfo.TriggerContentUri(photoUri, JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS)) addTriggerContentUri(TriggerContentUri(photoUri, TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS))
addTriggerContentUri(JobInfo.TriggerContentUri(videoUri, JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS)) addTriggerContentUri(TriggerContentUri(videoUri, TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS))
addTriggerContentUri(JobInfo.TriggerContentUri(MEDIA_URI, 0)) addTriggerContentUri(TriggerContentUri(MEDIA_URI, 0))
try { try {
context.getSystemService(JobScheduler::class.java).schedule(build()) context.getSystemService(JobScheduler::class.java)?.schedule(build())
} catch (ignored: Exception) { } catch (ignored: Exception) {
} }
} }
@ -54,7 +57,7 @@ class NewPhotoFetcher : JobService() {
fun isScheduled(context: Context): Boolean { fun isScheduled(context: Context): Boolean {
val jobScheduler = context.getSystemService(JobScheduler::class.java) val jobScheduler = context.getSystemService(JobScheduler::class.java)
val jobs = jobScheduler.allPendingJobs ?: return false val jobs = jobScheduler.allPendingJobs
return jobs.any { it.id == PHOTO_VIDEO_CONTENT_JOB } return jobs.any { it.id == PHOTO_VIDEO_CONTENT_JOB }
} }
@ -77,17 +80,17 @@ class NewPhotoFetcher : JobService() {
if (selection.isNotEmpty()) { if (selection.isNotEmpty()) {
selection.append(" OR ") selection.append(" OR ")
} }
selection.append("${MediaStore.Images.ImageColumns._ID} = '$id'") selection.append("${Images.ImageColumns._ID} = '$id'")
} }
var cursor: Cursor? = null var cursor: Cursor? = null
try { try {
val projection = arrayOf(MediaStore.Images.ImageColumns.DATA) val projection = arrayOf(Images.ImageColumns.DATA)
val uris = arrayListOf(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, MediaStore.Video.Media.EXTERNAL_CONTENT_URI) val uris = arrayListOf(Images.Media.EXTERNAL_CONTENT_URI, Video.Media.EXTERNAL_CONTENT_URI)
uris.forEach { uris.forEach {
cursor = contentResolver.query(it, projection, selection.toString(), null, null) cursor = contentResolver.query(it, projection, selection.toString(), null, null)
while (cursor!!.moveToNext()) { while (cursor!!.moveToNext()) {
val path = cursor!!.getStringValue(MediaStore.Images.ImageColumns.DATA) val path = cursor!!.getStringValue(Images.ImageColumns.DATA)
affectedFolderPaths.add(path.getParentPath()) affectedFolderPaths.add(path.getParentPath())
addPathToDB(path) addPathToDB(path)
} }