Skip to content
This repository has been archived by the owner on Mar 30, 2024. It is now read-only.

fix onRequestPermissionsResult crash & add arabic support #53

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions filepicker/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
apply plugin: 'com.android.library'

android {

compileSdkVersion 29
buildToolsVersion '29.0.2'
defaultConfig {
Expand All @@ -18,6 +19,7 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}

}

dependencies {
Expand All @@ -29,4 +31,10 @@ dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.2-alpha01'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.2-alpha01'


implementation 'io.reactivex.rxjava2:rxjava:2.2.11'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'com.github.doctoror.rxcursorloader:library:2.1.2'

}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.MimeTypeMap;
Expand All @@ -53,8 +54,15 @@
import java.io.File;
import java.util.ArrayList;

public class FilePickerActivity extends AppCompatActivity
implements OnSelectionListener<FileGalleryAdapter.ViewHolder>, OnCameraClickListener {
import io.reactivex.Observable;
import io.reactivex.Scheduler;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;

public class FilePickerActivity extends AppCompatActivity implements OnSelectionListener<FileGalleryAdapter.ViewHolder>, OnCameraClickListener {

public static final String MEDIA_FILES = "MEDIA_FILES";
public static final String SELECTED_MEDIA_FILES = "SELECTED_MEDIA_FILES";
public static final String CONFIGS = "CONFIGS";
Expand Down Expand Up @@ -103,8 +111,7 @@ protected void onCreate(Bundle savedInstanceState) {
setSupportActionBar(toolbar);

int spanCount;
if (getResources().getConfiguration().orientation
== Configuration.ORIENTATION_LANDSCAPE) {
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
spanCount = configs.getLandscapeSpanCount();
} else {
spanCount = configs.getPortraitSpanCount();
Expand All @@ -118,6 +125,7 @@ protected void onCreate(Bundle savedInstanceState) {
}

boolean isSingleChoice = configs.isSingleChoiceMode();

fileGalleryAdapter = new FileGalleryAdapter(this, mediaFiles, imageSize,
configs.isImageCaptureEnabled(),
configs.isVideoCaptureEnabled());
Expand All @@ -134,51 +142,68 @@ protected void onCreate(Bundle savedInstanceState) {
recyclerView.addItemDecoration(new DividerItemDecoration(getResources().getDimensionPixelSize(R.dimen.grid_spacing), spanCount));
recyclerView.setItemAnimator(null);

if (requestPermission(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_WRITE_PERMISSION)) {
loadFiles(false);
}

maxCount = configs.getMaxSelection();
if (maxCount > 0) {
setTitle(getResources().getString(R.string.selection_count, fileGalleryAdapter.getSelectedItemCount(), maxCount));
}
}

@Override
protected void onResume() {
super.onResume();

if (requestPermission(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_WRITE_PERMISSION)) {
loadFiles();
}
}

private boolean useDocumentUi() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q
&& configs.isShowFiles()
&& !(configs.isShowImages() || configs.isShowVideos() || configs.isShowAudios());
}

private void loadFiles(boolean restart) {
FileLoader.loadFiles(this, new FileResultCallback() {
private void loadFiles() {
FileLoader fileLoader = new FileLoader(this, configs);
fileLoader.loadFiles(new Consumer<ArrayList<MediaFile>>() {
@Override
public void onResult(ArrayList<MediaFile> filesResults) {
if (filesResults != null) {
mediaFiles.clear();
mediaFiles.addAll(filesResults);
fileGalleryAdapter.notifyDataSetChanged();
}
public void accept(ArrayList<MediaFile> mediaFiles) {
FilePickerActivity.this.mediaFiles.clear();
FilePickerActivity.this.mediaFiles.addAll(mediaFiles);
fileGalleryAdapter.notifyDataSetChanged();
}
}, configs, restart);
});
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_WRITE_PERMISSION) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
loadFiles(false);
} else {
Toast.makeText(this, R.string.permission_not_given, Toast.LENGTH_SHORT).show();
finish();
}
} else if (requestCode == REQUEST_CAMERA_PERMISSION_FOR_CAMERA || requestCode == REQUEST_CAMERA_PERMISSION_FOR_VIDEO) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
fileGalleryAdapter.openCamera(requestCode == REQUEST_CAMERA_PERMISSION_FOR_VIDEO);
} else {
Toast.makeText(this, R.string.permission_not_given, Toast.LENGTH_SHORT).show();
}

switch (requestCode) {

case REQUEST_WRITE_PERMISSION:
if (grantResults.length > 0) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
loadFiles();
} else {
Toast.makeText(this, R.string.permission_not_given, Toast.LENGTH_SHORT).show();
finish();
}
}
return;

case REQUEST_CAMERA_PERMISSION_FOR_CAMERA:
case REQUEST_CAMERA_PERMISSION_FOR_VIDEO:
if (grantResults.length > 0) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
fileGalleryAdapter.openCamera(requestCode == REQUEST_CAMERA_PERMISSION_FOR_VIDEO);
} else {
Toast.makeText(this, R.string.permission_not_given, Toast.LENGTH_SHORT).show();
}
}
return;

default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}

Expand All @@ -197,15 +222,14 @@ public void onScanCompleted(String path, final Uri uri) {
runOnUiThread(new Runnable() {
@Override
public void run() {
loadFiles(true);
loadFiles();
}
});
}
}
});
} else {
getContentResolver().delete(fileGalleryAdapter.getLastCapturedUri(),
null, null);
getContentResolver().delete(fileGalleryAdapter.getLastCapturedUri(), null, null);
}
} else if (requestCode == REQUEST_DOCUMENT) {
ContentResolver contentResolver = getContentResolver();
Expand Down
Loading