get use of some filepicker extensions

This commit is contained in:
tibbi 2016-11-15 20:36:31 +01:00
parent 60d46d2f56
commit 5e93e4225a
5 changed files with 23 additions and 60 deletions

View File

@ -5,8 +5,8 @@ import android.os.AsyncTask
import android.os.Environment import android.os.Environment
import android.util.Log import android.util.Log
import com.simplemobiletools.camera.activities.MainActivity import com.simplemobiletools.camera.activities.MainActivity
import com.simplemobiletools.camera.extensions.getFileDocument import com.simplemobiletools.filepicker.extensions.getFileDocument
import com.simplemobiletools.camera.extensions.needsStupidWritePermissions import com.simplemobiletools.filepicker.extensions.needsStupidWritePermissions
import java.io.* import java.io.*
import java.lang.ref.WeakReference import java.lang.ref.WeakReference
@ -44,7 +44,7 @@ class PhotoProcessor(val activity: MainActivity, val uri: Uri?) : AsyncTask<Byte
config.savePhotosFolder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).toString() config.savePhotosFolder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).toString()
return "" return ""
} }
var document = activity.getFileDocument(path) var document = activity.getFileDocument(path, config.treeUri)
document = document.createFile("", path.substring(path.lastIndexOf('/') + 1)) document = document.createFile("", path.substring(path.lastIndexOf('/') + 1))
fos = activity.contentResolver.openOutputStream(document.uri) fos = activity.contentResolver.openOutputStream(document.uri)
} else { } else {

View File

@ -673,7 +673,7 @@ public class Preview extends ViewGroup
return false; return false;
} }
try { try {
DocumentFile document = Utils.Companion.getFileDocument(getContext(), mCurrVideoPath); DocumentFile document = Utils.Companion.getFileDocument(getContext(), mCurrVideoPath, config.getTreeUri());
document = document.createFile("", mCurrVideoPath.substring(mCurrVideoPath.lastIndexOf('/') + 1)); document = document.createFile("", mCurrVideoPath.substring(mCurrVideoPath.lastIndexOf('/') + 1));
final Uri uri = document.getUri(); final Uri uri = document.getUri();
final ParcelFileDescriptor fileDescriptor = getContext().getContentResolver().openFileDescriptor(uri, "rw"); final ParcelFileDescriptor fileDescriptor = getContext().getContentResolver().openFileDescriptor(uri, "rw");

View File

@ -8,10 +8,10 @@ import android.content.res.Resources
import android.graphics.Point import android.graphics.Point
import android.hardware.Camera import android.hardware.Camera
import android.support.v4.content.ContextCompat import android.support.v4.content.ContextCompat
import android.widget.Toast import com.simplemobiletools.filepicker.extensions.getFileDocument
import com.simplemobiletools.camera.extensions.getFileDocument import com.simplemobiletools.filepicker.extensions.hasStoragePermission
import com.simplemobiletools.camera.extensions.isKitkat import com.simplemobiletools.filepicker.extensions.needsStupidWritePermissions
import com.simplemobiletools.camera.extensions.isPathOnSD import com.simplemobiletools.filepicker.extensions.toast
import java.io.File import java.io.File
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
@ -24,9 +24,7 @@ class Utils {
return info return info
} }
fun showToast(context: Context, resId: Int) { fun showToast(context: Context, resId: Int) = context.toast(resId)
Toast.makeText(context, context.resources.getString(resId), Toast.LENGTH_SHORT).show()
}
fun hasFlash(camera: Camera?): Boolean { fun hasFlash(camera: Camera?): Boolean {
if (camera == null) { if (camera == null) {
@ -58,10 +56,10 @@ class Utils {
} }
val timestamp = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(Date()) val timestamp = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(Date())
if (isPhoto) { return if (isPhoto) {
return mediaStorageDir.path + File.separator + "IMG_" + timestamp + ".jpg" mediaStorageDir.path + File.separator + "IMG_" + timestamp + ".jpg"
} else { } else {
return mediaStorageDir.path + File.separator + "VID_" + timestamp + ".mp4" mediaStorageDir.path + File.separator + "VID_" + timestamp + ".mp4"
} }
} }
@ -91,11 +89,10 @@ class Utils {
fun getNavBarHeight(res: Resources): Int { fun getNavBarHeight(res: Resources): Int {
val id = res.getIdentifier("navigation_bar_height", "dimen", "android") val id = res.getIdentifier("navigation_bar_height", "dimen", "android")
if (id > 0 && hasNavBar(res)) { return if (id > 0 && hasNavBar(res)) {
return res.getDimensionPixelSize(id) res.getDimensionPixelSize(id)
} } else
0
return 0
} }
fun hasNavBar(res: Resources): Boolean { fun hasNavBar(res: Resources): Boolean {
@ -103,20 +100,14 @@ class Utils {
return id > 0 && res.getBoolean(id) return id > 0 && res.getBoolean(id)
} }
fun hasCameraPermission(cxt: Context): Boolean { fun hasCameraPermission(context: Context) = ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
return ContextCompat.checkSelfPermission(cxt, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED
}
fun hasStoragePermission(cxt: Context): Boolean { fun hasStoragePermission(context: Context) = context.hasStoragePermission()
return ContextCompat.checkSelfPermission(cxt, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
}
fun hasAudioPermission(cxt: Context): Boolean { fun hasAudioPermission(cxt: Context) = ContextCompat.checkSelfPermission(cxt, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED
return ContextCompat.checkSelfPermission(cxt, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED
}
fun needsStupidWritePermissions(context: Context, path: String) = context.isPathOnSD(path) && context.isKitkat() fun needsStupidWritePermissions(context: Context, path: String) = context.needsStupidWritePermissions(path)
fun getFileDocument(context: Context, path: String) = context.getFileDocument(path) fun getFileDocument(context: Context, path: String, treeUri: String) = context.getFileDocument(path, treeUri)
} }
} }

View File

@ -13,10 +13,10 @@ import android.widget.AdapterView
import com.simplemobiletools.camera.Constants import com.simplemobiletools.camera.Constants
import com.simplemobiletools.camera.R import com.simplemobiletools.camera.R
import com.simplemobiletools.camera.dialogs.WritePermissionDialog import com.simplemobiletools.camera.dialogs.WritePermissionDialog
import com.simplemobiletools.camera.extensions.needsStupidWritePermissions
import com.simplemobiletools.filepicker.dialogs.FilePickerDialog import com.simplemobiletools.filepicker.dialogs.FilePickerDialog
import com.simplemobiletools.filepicker.extensions.getBasePath import com.simplemobiletools.filepicker.extensions.getBasePath
import com.simplemobiletools.filepicker.extensions.getHumanReadablePath import com.simplemobiletools.filepicker.extensions.getHumanReadablePath
import com.simplemobiletools.filepicker.extensions.needsStupidWritePermissions
import kotlinx.android.synthetic.main.activity_settings.* import kotlinx.android.synthetic.main.activity_settings.*
import java.io.File import java.io.File
@ -100,9 +100,7 @@ class SettingsActivity : SimpleActivity() {
path path
} }
private fun getStorageName(basePath: String): String { private fun getStorageName(basePath: String) = getHumanReadablePath(basePath) + "/"
return getHumanReadablePath(basePath) + "/"
}
@TargetApi(Build.VERSION_CODES.KITKAT) @TargetApi(Build.VERSION_CODES.KITKAT)
override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) { override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {

View File

@ -1,26 +0,0 @@
package com.simplemobiletools.camera.extensions
import android.content.Context
import android.net.Uri
import android.os.Build
import android.support.v4.provider.DocumentFile
import com.simplemobiletools.camera.Config
import com.simplemobiletools.filepicker.extensions.getSDCardPath
fun Context.needsStupidWritePermissions(path: String) = isPathOnSD(path) && isKitkat() && !getSDCardPath().isEmpty()
fun Context.isPathOnSD(path: String) = path.startsWith(getSDCardPath())
fun Context.isKitkat() = Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT
fun Context.getFileDocument(path: String): DocumentFile {
val relativePath = path.substring(getSDCardPath().length + 1)
var document = DocumentFile.fromTreeUri(this, Uri.parse(Config.newInstance(this).treeUri))
val parts = relativePath.split("/")
for (part in parts) {
val currDocument = document.findFile(part)
if (currDocument != null)
document = currDocument
}
return document
}