Skip to content

Commit 2cacf76

Browse files
committed
add some checks to avoid saving to sd card without permission
1 parent d77c236 commit 2cacf76

9 files changed

Lines changed: 24 additions & 0 deletions

File tree

app/src/main/java/com/simplemobiletools/camera/PhotoProcessor.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.simplemobiletools.camera
22

33
import android.net.Uri
44
import android.os.AsyncTask
5+
import android.os.Environment
56
import android.util.Log
67
import com.simplemobiletools.camera.activities.MainActivity
78
import com.simplemobiletools.camera.extensions.getFileDocument
@@ -35,6 +36,14 @@ class PhotoProcessor(val activity: MainActivity, val uri: Uri?) : AsyncTask<Byte
3536

3637
val photoFile = File(path)
3738
if (activity.needsStupidWritePermissions(path)) {
39+
val config = Config.newInstance(activity)
40+
if (config.treeUri.isEmpty()) {
41+
activity.runOnUiThread {
42+
Utils.showToast(activity, R.string.save_error_internal_storage)
43+
}
44+
config.savePhotosFolder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).toString()
45+
return ""
46+
}
3847
var document = activity.getFileDocument(path)
3948
document = document.createFile("", path.substring(path.lastIndexOf('/') + 1))
4049
fos = activity.contentResolver.openOutputStream(document.uri)

app/src/main/java/com/simplemobiletools/camera/Preview.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import android.media.MediaRecorder;
1111
import android.media.MediaScannerConnection;
1212
import android.net.Uri;
13+
import android.os.Environment;
1314
import android.os.Handler;
1415
import android.os.ParcelFileDescriptor;
1516
import android.support.v4.provider.DocumentFile;
@@ -664,6 +665,13 @@ public boolean initRecorder() {
664665
mRecorder.setProfile(cpHigh);
665666

666667
if (Utils.Companion.needsStupidWritePermissions(getContext(), mCurrVideoPath)) {
668+
final Config config = Config.newInstance(getContext());
669+
if (config.getTreeUri().isEmpty()) {
670+
Utils.Companion.showToast(mContext, R.string.save_error_internal_storage);
671+
config.setSavePhotosFolder(Environment.getExternalStorageDirectory().toString());
672+
releaseCamera();
673+
return false;
674+
}
667675
try {
668676
DocumentFile document = Utils.Companion.getFileDocument(getContext(), mCurrVideoPath);
669677
document = document.createFile("", mCurrVideoPath.substring(mCurrVideoPath.lastIndexOf('/') + 1));

app/src/main/res/values-de/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<string name="video_saving_error">Beim Speichern des Videos ist ein Fehler aufgetreten</string>
88
<string name="video_setup_error">Beim Starten der Aufnahme ist ein Fehler aufgetreten</string>
99
<string name="video_mode_error">Beim Umschalten zum Videomodus ist ein Fehler aufgetreten</string>
10+
<string name="save_error_internal_storage">An error occurred, save folder changed to internal storage</string>
1011
<string name="camera_switch_error">Kamerawechsel fehlgeschlagen</string>
1112
<string name="no_permissions">Ohne Zugriff auf Kamera und Speicher ist hier nicht viel zu tun</string>
1213
<string name="no_audio_permissions">Wir benötigen Zugriff auf das Mirkofon um Videos aufnehmen zu können</string>

app/src/main/res/values-it/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<string name="video_saving_error">Errore nel salvataggio del file video</string>
88
<string name="video_setup_error">Errore nella preparazione del registratore video</string>
99
<string name="video_mode_error">Passaggio alla modalità video fallita</string>
10+
<string name="save_error_internal_storage">An error occurred, save folder changed to internal storage</string>
1011
<string name="camera_switch_error">Cambio fotocamera fallito</string>
1112
<string name="no_permissions">Non c\'è molto da fare senza l\'accesso alla fotocamera e all\'archiviazione</string>
1213
<string name="no_audio_permissions">È necessario l\'accesso al microfono per registrare i video</string>

app/src/main/res/values-ja/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<string name="video_saving_error">ビデオファイルの保存時にエラーが発生しました</string>
88
<string name="video_setup_error">レコーダーのセットアップ時にエラーが発生しました</string>
99
<string name="video_mode_error">ビデオモードへの切り替えに失敗しました</string>
10+
<string name="save_error_internal_storage">An error occurred, save folder changed to internal storage</string>
1011
<string name="camera_switch_error">カメラの切り替えに失敗しました</string>
1112
<string name="no_permissions">お使いのカメラやストレージにアクセスしないと、ほとんど行うことはありません</string>
1213
<string name="no_audio_permissions">ビデオを記録するためにオーディオのアクセス許可が必要です</string>

app/src/main/res/values-pt-rPT/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<string name="video_saving_error">Ocorreu um erro ao guardar o ficheiro de vídeo</string>
88
<string name="video_setup_error">Ocorreu um erro ao configurar a gravação</string>
99
<string name="video_mode_error">Falha ao mudar para o modo vídeo</string>
10+
<string name="save_error_internal_storage">An error occurred, save folder changed to internal storage</string>
1011
<string name="camera_switch_error">Falha ao mudar de câmara</string>
1112
<string name="no_permissions">É necessária a permissão para aceder à câmara e ao armazenamento</string>
1213
<string name="no_audio_permissions">A permissão de áudio é necessária para a gravação de vídeos</string>

app/src/main/res/values-ru/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<string name="video_saving_error">Произошла ошибка записи видео файла</string>
88
<string name="video_setup_error">Произошла ошибка настройки рекордера</string>
99
<string name="video_mode_error">Переключение в режим видео не удалось</string>
10+
<string name="save_error_internal_storage">An error occurred, save folder changed to internal storage</string>
1011
<string name="camera_switch_error">Переключение камеры не удалось</string>
1112
<string name="no_permissions">Не так много можно сделать без доступа к камере и хранилищу</string>
1213
<string name="no_audio_permissions">Нам нужно аудио разрешение для записи видео</string>

app/src/main/res/values-sv/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<string name="video_saving_error">Ett fel uppstod när videofilen skulle sparas</string>
88
<string name="video_setup_error">Ett fel uppstod när inspelningen skulle starta</string>
99
<string name="video_mode_error">Byte till videoläge misslyckades</string>
10+
<string name="save_error_internal_storage">An error occurred, save folder changed to internal storage</string>
1011
<string name="camera_switch_error">Byte av kamera misslyckades</string>
1112
<string name="no_permissions">Inte mycket att göra utan tillgång till din kamera och lagring</string>
1213
<string name="no_audio_permissions">För att spela in video krävs ljudrättigheter</string>

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<string name="video_saving_error">An error occurred saving the video file</string>
88
<string name="video_setup_error">An error occurred setting up the recorder</string>
99
<string name="video_mode_error">Switching to video mode failed</string>
10+
<string name="save_error_internal_storage">An error occurred, save folder changed to internal storage</string>
1011
<string name="camera_switch_error">Switching camera failed</string>
1112
<string name="no_permissions">Not much to do without accessing your camera and storage</string>
1213
<string name="no_audio_permissions">We need the audio permission for recording videos</string>

0 commit comments

Comments
 (0)