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));

View File

@ -7,6 +7,7 @@
<string name="video_saving_error">Beim Speichern des Videos ist ein Fehler aufgetreten</string>
<string name="video_setup_error">Beim Starten der Aufnahme ist ein Fehler aufgetreten</string>
<string name="video_mode_error">Beim Umschalten zum Videomodus ist ein Fehler aufgetreten</string>
<string name="save_error_internal_storage">An error occurred, save folder changed to internal storage</string>
<string name="camera_switch_error">Kamerawechsel fehlgeschlagen</string>
<string name="no_permissions">Ohne Zugriff auf Kamera und Speicher ist hier nicht viel zu tun</string>
<string name="no_audio_permissions">Wir benötigen Zugriff auf das Mirkofon um Videos aufnehmen zu können</string>

View File

@ -7,6 +7,7 @@
<string name="video_saving_error">Errore nel salvataggio del file video</string>
<string name="video_setup_error">Errore nella preparazione del registratore video</string>
<string name="video_mode_error">Passaggio alla modalità video fallita</string>
<string name="save_error_internal_storage">An error occurred, save folder changed to internal storage</string>
<string name="camera_switch_error">Cambio fotocamera fallito</string>
<string name="no_permissions">Non c\'è molto da fare senza l\'accesso alla fotocamera e all\'archiviazione</string>
<string name="no_audio_permissions">È necessario l\'accesso al microfono per registrare i video</string>

View File

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

View File

@ -7,6 +7,7 @@
<string name="video_saving_error">Ocorreu um erro ao guardar o ficheiro de vídeo</string>
<string name="video_setup_error">Ocorreu um erro ao configurar a gravação</string>
<string name="video_mode_error">Falha ao mudar para o modo vídeo</string>
<string name="save_error_internal_storage">An error occurred, save folder changed to internal storage</string>
<string name="camera_switch_error">Falha ao mudar de câmara</string>
<string name="no_permissions">É necessária a permissão para aceder à câmara e ao armazenamento</string>
<string name="no_audio_permissions">A permissão de áudio é necessária para a gravação de vídeos</string>

View File

@ -7,6 +7,7 @@
<string name="video_saving_error">Произошла ошибка записи видео файла</string>
<string name="video_setup_error">Произошла ошибка настройки рекордера</string>
<string name="video_mode_error">Переключение в режим видео не удалось</string>
<string name="save_error_internal_storage">An error occurred, save folder changed to internal storage</string>
<string name="camera_switch_error">Переключение камеры не удалось</string>
<string name="no_permissions">Не так много можно сделать без доступа к камере и хранилищу</string>
<string name="no_audio_permissions">Нам нужно аудио разрешение для записи видео</string>

View File

@ -7,6 +7,7 @@
<string name="video_saving_error">Ett fel uppstod när videofilen skulle sparas</string>
<string name="video_setup_error">Ett fel uppstod när inspelningen skulle starta</string>
<string name="video_mode_error">Byte till videoläge misslyckades</string>
<string name="save_error_internal_storage">An error occurred, save folder changed to internal storage</string>
<string name="camera_switch_error">Byte av kamera misslyckades</string>
<string name="no_permissions">Inte mycket att göra utan tillgång till din kamera och lagring</string>
<string name="no_audio_permissions">För att spela in video krävs ljudrättigheter</string>

View File

@ -7,6 +7,7 @@
<string name="video_saving_error">An error occurred saving the video file</string>
<string name="video_setup_error">An error occurred setting up the recorder</string>
<string name="video_mode_error">Switching to video mode failed</string>
<string name="save_error_internal_storage">An error occurred, save folder changed to internal storage</string>
<string name="camera_switch_error">Switching camera failed</string>
<string name="no_permissions">Not much to do without accessing your camera and storage</string>
<string name="no_audio_permissions">We need the audio permission for recording videos</string>