add some checks to avoid saving to sd card without permission

This commit is contained in:
tibbi
2016-11-06 17:34:53 +01:00
parent d77c236362
commit 2cacf76d92
9 changed files with 24 additions and 0 deletions

View File

@@ -2,6 +2,7 @@ package com.simplemobiletools.camera
import android.net.Uri
import android.os.AsyncTask
import android.os.Environment
import android.util.Log
import com.simplemobiletools.camera.activities.MainActivity
import com.simplemobiletools.camera.extensions.getFileDocument
@@ -35,6 +36,14 @@ class PhotoProcessor(val activity: MainActivity, val uri: Uri?) : AsyncTask<Byte
val photoFile = File(path)
if (activity.needsStupidWritePermissions(path)) {
val config = Config.newInstance(activity)
if (config.treeUri.isEmpty()) {
activity.runOnUiThread {
Utils.showToast(activity, R.string.save_error_internal_storage)
}
config.savePhotosFolder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).toString()
return ""
}
var document = activity.getFileDocument(path)
document = document.createFile("", path.substring(path.lastIndexOf('/') + 1))
fos = activity.contentResolver.openOutputStream(document.uri)

View File

@@ -10,6 +10,7 @@ import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.media.MediaScannerConnection;
import android.net.Uri;
import android.os.Environment;
import android.os.Handler;
import android.os.ParcelFileDescriptor;
import android.support.v4.provider.DocumentFile;
@@ -664,6 +665,13 @@ public class Preview extends ViewGroup
mRecorder.setProfile(cpHigh);
if (Utils.Companion.needsStupidWritePermissions(getContext(), mCurrVideoPath)) {
final Config config = Config.newInstance(getContext());
if (config.getTreeUri().isEmpty()) {
Utils.Companion.showToast(mContext, R.string.save_error_internal_storage);
config.setSavePhotosFolder(Environment.getExternalStorageDirectory().toString());
releaseCamera();
return false;
}
try {
DocumentFile document = Utils.Companion.getFileDocument(getContext(), mCurrVideoPath);
document = document.createFile("", mCurrVideoPath.substring(mCurrVideoPath.lastIndexOf('/') + 1));