Skip to content

Commit

Permalink
Merge pull request #3571 from TeamAmaze/issue/2417
Browse files Browse the repository at this point in the history
Fixes #2417
  • Loading branch information
VishalNehra authored Nov 18, 2022
2 parents 7761b94 + 0b545cb commit 996f1b3
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 26 deletions.
11 changes: 11 additions & 0 deletions app/src/main/java/com/amaze/filemanager/ui/Extensions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -112,3 +112,14 @@ fun View.showFade(duration: Long) {
this.animate().alpha(1f).duration = duration
this.visibility = View.VISIBLE
}

/**
* Extension function to check for activity in package manager before triggering code
*/
fun Intent.runIfDocumentsUIExists(context: Context, callback: Runnable) {
if (this.resolveActivity(context.packageManager) != null) {
callback.run()
} else {
AppConfig.toast(context, R.string.no_app_found_intent)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ import com.amaze.filemanager.databinding.FragmentFtpBinding
import com.amaze.filemanager.filesystem.files.FileUtils
import com.amaze.filemanager.ui.activities.MainActivity
import com.amaze.filemanager.ui.notifications.FtpNotification
import com.amaze.filemanager.ui.runIfDocumentsUIExists
import com.amaze.filemanager.ui.theme.AppTheme
import com.amaze.filemanager.utils.OneCharacterCharSequence
import com.amaze.filemanager.utils.PasswordUtil
Expand Down Expand Up @@ -224,9 +225,13 @@ class FtpServerFragment : Fragment(R.layout.fragment_ftp) {
}
R.id.ftp_path -> {
if (shouldUseSafFileSystem()) {
activityResultHandlerOnFtpServerPathUpdate.launch(
Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
)
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)

intent.runIfDocumentsUIExists(mainActivity) {
activityResultHandlerOnFtpServerPathUpdate.launch(
intent
)
}
} else {
val dialogBuilder = FolderChooserDialog.Builder(requireActivity())
dialogBuilder
Expand Down Expand Up @@ -449,28 +454,33 @@ class FtpServerFragment : Fragment(R.layout.fragment_ftp) {
.positiveColor(accentColor)
.negativeText(R.string.cancel)
.negativeColor(accentColor)
.onPositive { dialog, _ ->
activityResultHandlerOnFtpServerPathGrantedSafAccess.launch(
Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).also {
if (SDK_INT >= O &&
directoryUri.startsWith(defaultPathFromPreferences)
) {
it.putExtra(
EXTRA_INITIAL_URI,
DocumentsContract.buildDocumentUri(
"com.android.externalstorage.documents",
"primary:" +
directoryUri
.substringAfter(
defaultPathFromPreferences
)
.onPositive(fun(dialog: MaterialDialog, _: DialogAction) {
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)

intent.runIfDocumentsUIExists(mainActivity) {
activityResultHandlerOnFtpServerPathGrantedSafAccess.launch(
intent.also {
if (SDK_INT >= O &&
directoryUri.startsWith(defaultPathFromPreferences)
) {
it.putExtra(
EXTRA_INITIAL_URI,
DocumentsContract.buildDocumentUri(
"com.android.externalstorage.documents",
"primary:" +
directoryUri
.substringAfter(
defaultPathFromPreferences
)
)
)
)
}
}
}
)
)
}

dialog.dismiss()
}.build().show()
}).build().show()
}
} else {
callback.invoke()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
import com.amaze.filemanager.filesystem.files.EncryptDecryptUtils;
import com.amaze.filemanager.filesystem.files.FileListSorter;
import com.amaze.filemanager.filesystem.files.FileUtils;
import com.amaze.filemanager.ui.ExtensionsKt;
import com.amaze.filemanager.ui.activities.MainActivity;
import com.amaze.filemanager.ui.activities.MainActivityViewModel;
import com.amaze.filemanager.ui.dialogs.GeneralDialogCreation;
Expand Down Expand Up @@ -657,7 +658,11 @@ private OpenMode loadPathInQ(String actualPath, String providedPath, OpenMode pr
d.getActionButton(DialogAction.POSITIVE)
.setOnClickListener(
v -> {
handleDocumentUriForRestrictedDirectories.launch(intent);
ExtensionsKt.runIfDocumentsUIExists(
intent,
requireMainActivity(),
() -> handleDocumentUriForRestrictedDirectories.launch(intent));

d.dismiss();
});
d.show();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
import com.amaze.filemanager.filesystem.RootHelper;
import com.amaze.filemanager.filesystem.cloud.CloudUtil;
import com.amaze.filemanager.filesystem.files.FileUtils;
import com.amaze.filemanager.ui.ExtensionsKt;
import com.amaze.filemanager.ui.activities.AboutActivity;
import com.amaze.filemanager.ui.activities.MainActivity;
import com.amaze.filemanager.ui.activities.PreferencesActivity;
Expand Down Expand Up @@ -845,7 +846,14 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
.setOnClickListener(
(v) -> {
Intent safIntent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
mainActivity.startActivityForResult(safIntent, MainActivity.REQUEST_CODE_SAF);

ExtensionsKt.runIfDocumentsUIExists(
safIntent,
mainActivity,
() ->
mainActivity.startActivityForResult(
safIntent, MainActivity.REQUEST_CODE_SAF));

dialog.dismiss();
});
dialog.show();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
import com.amaze.filemanager.filesystem.files.CryptUtil;
import com.amaze.filemanager.filesystem.files.FileUtils;
import com.amaze.filemanager.filesystem.ftp.NetCopyClientUtils;
import com.amaze.filemanager.ui.ExtensionsKt;
import com.amaze.filemanager.ui.activities.MainActivity;
import com.amaze.filemanager.ui.dialogs.GeneralDialogCreation;
import com.amaze.filemanager.ui.fragments.MainFragment;
Expand All @@ -67,6 +68,7 @@
import com.amaze.filemanager.ui.views.WarnableTextInputValidator;
import com.leinardi.android.speeddial.SpeedDialView;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
Expand Down Expand Up @@ -327,9 +329,13 @@ public void guideDialogForLEXA(String path, int requestCode) {
y.show();
}

@SuppressLint("InlinedApi")
private void triggerStorageAccessFramework(int requestCode) {

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
mainActivity.startActivityForResult(intent, requestCode);

ExtensionsKt.runIfDocumentsUIExists(
intent, mainActivity, () -> mainActivity.startActivityForResult(intent, requestCode));
}

public void rename(
Expand Down
3 changes: 2 additions & 1 deletion app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -789,9 +789,10 @@ You only need to do this once, until the next time you select a new location for
<string name="protocol_ftp" translatable="false">FTP</string>
<string name="protocol_ftps">Secure FTP</string>
<string name="unavailable">Unavailable</string>
<string name="free_of">"%s\n%s free of %s</string>
<string name="cloud_error_fdroid">Amaze Cloud Plugin not supported with F-Droid version. Please use Play Store version of Amaze.</string>
<string name="disable_player_intent_filters">Disable player intent filters</string>
<string name="disable_player_intent_filters_summary">Disables Amaze inbuilt media players from file chooser</string>
<string name="free_of">"%s\n%s free of %s</string>
<string name="no_app_found_intent">No app found to handle this intent. Do you have DocumentsUI installed?</string>
</resources>

0 comments on commit 996f1b3

Please sign in to comment.